起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 154|回复: 9

关于用消息(自定义消息)刷新的问题(很奇怪)

[复制链接]
发表于 2010-3-5 09:10:55 | 显示全部楼层 |阅读模式
有的用户有多个工作台,有的可能只有其中之一。例如(TA,TB),现在在某任务处理后,需要分别对TA,TB进行刷新操作。我用消息对他们进行刷新。现在遇到一个问题。用户A,把任务给了用户A,和用户B,如果A先提交任务,B再提交任务正常,如果B把任务提交了,注销平台系统(换用A的账号登陆),处理这条任务后在刷新时报错,如果不是注销,而是直接退出系统,重新用A的账号登陆,处理这条任务,系统正常。请问这是什么原因造成的?
回复

使用道具 举报

发表于 2010-3-5 09:21:01 | 显示全部楼层
http://bbs.justep.com/forum.php?mod=viewthread&tid=18518
你是不是退出系统的时候没有释放消息对象啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-5 09:31:23 | 显示全部楼层
释放掉了,消息是没有问题的。
现在的情况是如果用户用的不是系统默认的工作台时,而且是采用注销的方式处理任务时会报错。

由于任务处理完毕后,需要对工作台刷新,由于当前活动的工作台不是系统工作台,所以DataSetBrokerTaskIndex 这个数据集就是一个空对象。
每次运行到这个函数时就报错。
function TTASKNAV.GetTaskDataSet: TSQLDataSet;
begin
  Result := DataSetBrokerTaskIndex.DataSet as TSQLDataSet; //运行到此处报错。
end;
回复 支持 反对

使用道具 举报

发表于 2010-3-5 09:34:52 | 显示全部楼层
那加个判断啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-5 09:51:19 | 显示全部楼层
加个判断还是不行。
想用 try   finally end  把那个异常处理掉,也不行。只有处理完毕后,全部关掉,重新登录就可以处理。
回复 支持 反对

使用道具 举报

发表于 2010-3-5 09:53:02 | 显示全部楼层
那我还是感觉有资源没释放。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-5 10:32:00 | 显示全部楼层
步骤都是严格按照2楼的链接做的,不知道还需要释放一些什么资源?
回复 支持 反对

使用道具 举报

发表于 2010-3-5 11:27:08 | 显示全部楼层
你加个 try   except end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-5 11:57:32 | 显示全部楼层
加上 try   except end 就OK了。
不知道为啥 try   finally end   却捕获不了异常。
回复 支持 反对

使用道具 举报

发表于 2010-3-5 13:07:21 | 显示全部楼层
!!两个语法差别很大啊,一个是强制执行,一个是捕获异常。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-11 05:55 , Processed in 0.039867 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表