我的一个项目使用了WebService技术,项目是这样的,我这边通过WebService向对方发出请求,并等待对方的处理结果;
可是对方总是会有无法返回的请求,致使我这里无限期的等待;我现在想通过超时退出的策略,强制对无返回的请求做退出的操作,可是我不知道该如何处理,希望各位给与帮助;这个问题困扰我有一段时间了,请大家帮忙吧;
可是对方总是会有无法返回的请求,致使我这里无限期的等待;我现在想通过超时退出的策略,强制对无返回的请求做退出的操作,可是我不知道该如何处理,希望各位给与帮助;这个问题困扰我有一段时间了,请大家帮忙吧;
客户端是我这里的系统,用Delphi7写的;我如何才能够很好的控制延时处理的问题呢?
……
Webservice.DoSomeThing();
……
使用现成就改成……
StartThread();ThreadRuning:=true;while(ThreadRuning)
begin
sleep(100);
Application.ProcessMessages();
inc(TimerCounter);
if (TimerCounter>50) //5秒超时
begin
KillThread();
ThreadRuning:=false;
end;
end;
……然后在线程函数里面执行……
Webservice.DoSomeThing();
ThreadRuning:=false;
这样的话,如果5秒内webservice返回了,则线程会将ThreadRuning置为false,主线程的while在下一次循环时会退出。假如5秒内没有返回,则主线程执行KillThread()结束线程,同时设置ThreadRuning为false,退出while循环
这只是一个简单的例子,具体如何用要看你代码的需求。delphi如何创建、结束线程,你可以在网上搜到。
注意不要在线程里调用任何vcl控件的方法和属性,如果实在要调用,必须使用Synchronize方法