我用TIDClient控件做了一个客户端的程序,我为他创建了一个线程,在线程的execute里
我要收到一个串就发送一个固定的内容,另外,我还会同时对收到的串做处理,运行到页没错,可是在运行间关闭的时候,总是提示:发生软件异常。
请问我该如何纠正!源码如下:
//循环接收信息
Procedure TClientThread.Execute;
begin
while not ClientThread.Terminated do
begin
if not Form1.IdTCPClient.Connected then
Terminate
else
try
stInform:=Form1.IdTCPClient.ReadLn;
If stInform<>'0|' then
begin
synchronize(DoIt);
end;
try
Form1.IdTCPClient.WriteLn('Update|');
except
on E:Exception do MessageDlg('Error :'+#13+E.Message,
mtError,[mbOK],0);
end;
except
on E:Exception do MessageDlg('Error :'+#13+E.Message,
mtError,[mbOK],0);
end;
end;
end;在窗体关闭的时候我改做那些处理呢?
我要收到一个串就发送一个固定的内容,另外,我还会同时对收到的串做处理,运行到页没错,可是在运行间关闭的时候,总是提示:发生软件异常。
请问我该如何纠正!源码如下:
//循环接收信息
Procedure TClientThread.Execute;
begin
while not ClientThread.Terminated do
begin
if not Form1.IdTCPClient.Connected then
Terminate
else
try
stInform:=Form1.IdTCPClient.ReadLn;
If stInform<>'0|' then
begin
synchronize(DoIt);
end;
try
Form1.IdTCPClient.WriteLn('Update|');
except
on E:Exception do MessageDlg('Error :'+#13+E.Message,
mtError,[mbOK],0);
end;
except
on E:Exception do MessageDlg('Error :'+#13+E.Message,
mtError,[mbOK],0);
end;
end;
end;在窗体关闭的时候我改做那些处理呢?
try
YourThread.Suspend;
YourThread.Destory;
except
end;
另外你在线程里面声明的对象创建的时候它的Owner时最好用Self
即TYourObject.Create(Self)创建
在窗体关闭中试试
ClientThread.Terminated
procedure TForm1.FormCreate(Sender: TObject);
begin
IdTCPClient.Host:='192.168.0.20';
IdTCPClient.Port:=6010; try
IdTCPClient.Connect(1000);
ClientThread:=TClientThread.Create(true);
ClientThread.FreeOnTerminate:=True;
ClientThread.Resume; except
on E:Exception do MessageDlg('Error while connecting:'+#13+E.Message,
mtError,[mbOK],0);
end;
if IdTCPClient.Connected then
IdTCPClient.WriteLn('Login|Client|guest|');
label1.Caption:='已登陆网站 ';
end;