在 Delphi 中,我有一个线程客户端,用于侦听线程中的响应。线程声明如下:
TMyThread = class(TThread)
private
FClient: TIdTCPClient;
FStringResponse: string;
protected
procedure Execute; override;
procedure DoSynch;
public
constructor Create(AClient: TIdTCPClient);
end;
我使用以下方式连接:
if not IdTCPClient1.Connected then
begin
// // Set the Host
IdTCPClient1.Host := Edit1.Text;
// // Set the port
IdTCPClient1.Port := 65535;
// // Connect
IdTCPClient1.Connect;
try
MyThread := TMyThread.Create(IdTCPClient1);
except
IdTCPClient1.Disconnect;
raise;
end;
end;
我尝试使用以下方式断开连接:
if MyThread <> nil then
begin
MyThread.Terminate;
// MyThread.WaitFor;
MyThread.Free;
MyThread := nil;
IdTCPClient1.Disconnect;
end;
但是这个断开连接代码会引发异常。终止此线程并断开客户端的正确方法是什么?