社区
Delphi
帖子详情
这问题难道没人能回答?!
Barbarian
2000-09-07 09:31:00
通常在长时间处理过程中,我们可以定期地调用Application.ProcessMessages来实现
界面刷新,但现在我遇到一个问题:在三层结构中,客户端程序依次调用异地DCOM服务器上的一系列函数,而这些函数的处理时间均比较长,我不知该如何处理客户端界面的刷新,在此特向各位大虾求教。
...全文
308
9
打赏
收藏
这问题难道没人能回答?!
通常在长时间处理过程中,我们可以定期地调用Application.ProcessMessages来实现 界面刷新,但现在我遇到一个问题:在三层结构中,客户端程序依次调用异地DCOM服务器上的一系列函数,而这些函数的处理时间均比较长,我不知该如何处理客户端界面的刷新,在此特向各位大虾求教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tms2000
2000-09-13
打赏
举报
回复
old=Now;
Repeat
Application.ProcessMessages;
Until Now>Old+Num* 1/24/60/60
JGTM2000
2000-09-08
打赏
举报
回复
Sayhigh is all right. Use a UI thread to handle such situation. Be careful to match the threading model of the COM components you are calling, or you will get serious performance trouble.
c1005
2000-09-08
打赏
举报
回复
会不会使用COM 的 Callback 编程模式,如果会的话,可在应用服务器再将收到的data进行处理,即取出data中的每条记录,将记录的每个字段读出,作为参数传递给另一数据库服务器上的存储过程,然后执行存储过程时这段业务过程中加上相应调用回调方法,在回调方法应有Application.ProcessMessages语句,这样就可以将应用服务器的处理进度反馈给客户端,且Application.ProcessMessages语句的目的就是处理客户端界面的刷新。
Callback 编程方法就是在应用服务器上新增一个接口,在定义相应的方法,然后在客户端采用接口对象的方式实现此接口,例如:
客户端:
TClientCallback = class(TAutoIntfObject, IClientCallback(应用服务器上的接口))
protected
procedure Progress(param1: 类型); safecall;
end;
procedure TFrmClient.FormCreate(Sender: TObject);
var
typelib: ITypeLib;
begin
OleCheck(LoadRegTypeLib(LIBID_CallbackServer, 1, 0, 0, typelib));
FClientCallback := TClientCallback.Create(typelib, IClientCallback);
end;
procedure TFrmClient。BtnServerClient(Sender: TObject);
begin
MDCOMConnection1.AppServer.Refresh(FClientCallback);
end;
Server 端:
procedure TServer.Refresh(FClientCallback :OleVariant);
begin
OleVariant(IDispatch(FClientCallback)).Progress(参数);
...
end;
iforever
2000-09-08
打赏
举报
回复
我不知道你说的那些和客户端刷新有什么联系.
你做的这些事我也做过.
把你的刷新任务讲清楚些.
你的问题并没有讲清楚
是需要定期实时刷新速度太满.
还是手工刷新太慢
Barbarian
2000-09-07
打赏
举报
回复
很感激playpcgame和c1005两位的回答,但在DCOM server上执行Application.ProcessMessages的方法我也曾试过,好像只能处理服务器本身的刷新,对客户端的刷新却无能为力,至于将服务器端的函数分拆固然是个不错的主意,但对我却无多大意义,因为
我这里的具体处理流程是这样的:客户端从本地局域网上的数据库服务器上取得若干数据集,然后将每个数据集分别以data的形式发送给异地应用服务器,应用服务器再将收到的data进行处理,即取出data中的每条记录,将记录的每个字段读出,作为参数传递给另一数据库服务器上的存储过程,然后执行存储过程.这个流程如果一变,将给我增加很多工作量,因此不到万不得已是不会
去改变这基本流程的。
c1005
2000-09-07
打赏
举报
回复
你只需要在COM Server 上的方法中的相应的位置上加上Application.ProcessMessages;语句就能够如何处理客户端界面的刷新
playpcgame
2000-09-07
打赏
举报
回复
见服务器端的函数进行分拆,减少执行时间
playpcgame
2000-09-07
打赏
举报
回复
将服务器端的函数进行分拆,减少执行时间
Sayhigh
2000-09-07
打赏
举报
回复
用线程处理.
服务器重装系统后风扇声音大,服务器,你安静一点好不好?!噪音大令人头疼,一招便可解决!...
噪音大令人头疼,一招便可解决!服务器,你安静一点好不好?!相信许多机房工作人员都曾发出过这样的呐喊。服务器在运行的时候总是有声音的,但声音过大的话就是噪音了,未免令人头疼。今天我们就通过一则客户服务...
为什么你的
问题
群里
没
人
回答
?这就是原因!
请明确:
没
有人有义务教你,教你的人都是“天使”,拥有着乐于助人的心。
Java 死,前端凉?!斗胆说点真话
我其实一直不太想
回答
这种
问题
,因为一个人一个看法,争议会比较大,但是最近看到身边有一些同学 “无脑转行” 的情况,还是决定来客观分析下这个
问题
。推荐观看视频版:...
HR问:假如公司给不到你期望的薪资怎么办?这个
问题
该如何体面地
回答
?
面对这种
问题
,该怎么
回答
才体面?来看一波网友的机智
回答
:有人委婉拒绝,说“愿贵司早日找到合适的员工”、“希望后面有机会与贵司合作”。有人说首先赞赏一下公司的面试表现,但由于细节匹配不足,很遗憾不能和...
面试中常问的你在项目开发中遇到过哪些
问题
怎么
回答
?
此
问题
的
回答
一般从三个方向入手,一是技术
问题
,二是解决方案
问题
,三是甲方或团队配合
问题
,针对这三个方面的
问题
回答
示例。 一、技术方面: 开发项目过程中遇到
问题
是难免的,但是面试中绝对不可以暴露低级的bug...
Delphi
5,392
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章