当IdTCPClient与IdTCPServer的消息不成对的时候,程序会死掉! ( 积分: 200 )

  • 主题发起人 主题发起人 wlandll
  • 开始时间 开始时间
W

wlandll

Unregistered / Unconfirmed
GUEST, unregistred user!
我用IdTCPClient和IdTCPServer写了个通信程序,是同步方式的,必须一个发消息,一个接收消息,可是遇到意外情况时,假设IdTCPClient发消息给了IdTCPServer,而IdTCPServer由于意外情况,没有返回消息,这时IdTCPServer做的客户端就死在那里了,该如何解决!!!!
 
我用IdTCPClient和IdTCPServer写了个通信程序,是同步方式的,必须一个发消息,一个接收消息,可是遇到意外情况时,假设IdTCPClient发消息给了IdTCPServer,而IdTCPServer由于意外情况,没有返回消息,这时IdTCPServer做的客户端就死在那里了,该如何解决!!!!
 
IdTCPServer有个超时的属性,可是设置以后无效,不知道为什么!
 
大虾们,快帮帮忙!
 
救命啊!
 
大家帮帮忙啊
 
你用的阻塞方式吧???
改成非阻塞方式吧!!
 
加上一个TIdAntiFreeze控件
 
楼上正解
 
魏红: TIdAntiFreeze 控件需要设置属性吗?我看到有个属性OnlyWhenIdle,是不是指需要空闲时才会起作用。而我界面死提是因为等待不到服务器的消息。
 
TIdAntiFreeze 控件需要设置属性吗?我看到有个属性OnlyWhenIdle,是不是指需要空闲时才会起作用。而我界面死掉是因为等待不到服务器的消息。
 
你用
try
……
finally
if idtcpclient.connected then idtcpclient.disconnect;
end;
 
TIdAntiFreeze把接收任务用线程与界面脱开,不需要设置就可以
 
可是不做设置的话没有效果
 
TIdAntiFreeze 的OnlyWhenIdle 属性要设置成False,以指明在任务情况下,界面冻结的话,均执行解冻动作。
 
后退
顶部