idtcpclient利用一个线程读取数据,关闭时出错。程序很简单.急!(25分)

  • 主题发起人 主题发起人 lotuscheng2
  • 开始时间 开始时间
L

lotuscheng2

Unregistered / Unconfirmed
GUEST, unregistred user!
Button_open //建立一个线程
newthread:=threadconnect.Create;

Button_close //关闭线程
idtcpclient1.Disconnect ; //关闭Client
newthread.Terminate ; //结束线程 .

procedure ThreadConnect.Execute; //线程
var msg:string;
begin
freeonterminate:=true;
while not (Terminated ) and form1.IdTCPClient1.Connected do
begin
msg:=form1.IdTCPClient1.ReadLn();
if msg<>'' then //出错了..
begin

end;
end;
end;

当执行关闭线程newthread.Terminate后程序跳到if msg<>'' then出错,信息如下:Class EidReadTimeOut with message 'read timeout'
 
急的头发都掉了!!!哪位朋友帮帮忙.
 
给它关掉提示,呵呵
Try
Except
End;
 
newthread.Terminate ; //结束线程 .
idtcpclient1.Disconnect ; //关闭Client
 
调试的时候会出错..直接执行.exe文件就不会了.....
 
to exceed :原因不查明不放心啊!
to leizengzheng:我已经象这样换过N遍了。
to youou:能说说原因吗?为什么调试出错?
 
嘻~~
其实这个没有错的..具体原因我也说不清楚...

我猜想主要是执行退出时IdTCPClient1已经没有与服务端连接...
不过应该是这句出错msg:=form1.IdTCPClient1.ReadLn(); 才对的....
 
接受答案了.
 
后退
顶部