读书人

线程的有关问题

发布时间: 2012-06-06 16:44:11 作者: rapoo

线程的问题
procedure TMyThread.Execute;
begin
while not Terminated do begin
try
CheckNet(FSocket); // 使用FSocket(TIdUDPClient)和服务器通讯,很简单一问一答。

if not FNetIsOK then // FNetIsOK 是一个变量,在CheckNet中会改变值
FNetStatus := '与前端设备连接状态:异常'
else
FNetStatus := '与前端设备连接状态:正常';

Synchronize(ShowNetStatus); // 显示网络状态
except
end;
end;
end;

现在的问题是,当运行着好好的时候我把网线拔掉(模拟断网了),程序就莫名奇妙,根本显示不了我想要的“异常”。线程也终止不了了。咋回事?

[解决办法]
CheckNet产生异常了?
[解决办法]
关键在CheckNet里面
[解决办法]
IdUDPClient 是无连接协议
网线拔不拔掉 并不影响程序
UDP包发送出去就不管了
你要自己判断 多长时间 没有信息返回 就认为断线 修改FNetIsOK 值

读书人网 >.NET

热点推荐