Delphi-Quellcode:
constructor TTwConnection2SvrThread.Create(ParentComp: TTestComp; TcpCon: TIdTcpClient);
begin
inherited Create(True);
FreeOnTerminate := True;
fParent := ParentComp;
fTcpCon := TcpCon;
end;
procedure TTwConnection2SvrThread.Execute;
begin
fSendCS := TCriticalSection.Create;
while (not Terminated) and fTcpCon.Connected do
begin
// do some work ...
end;
if fTcpCon.Connected then
try
// Send Logout Command
fTcpCon.WriteLn('QUIT');
fTcpCon.Disconnect;
except
end;
fSendCS.Free;
end;
So sollte es gehen. Der Thread raeumt am Ende des Execute einfach selber auf.
Sollte fSendCS nur im Execute gebraucht werden, so kann es durchaus auch eine lokale Variable von Execute sein.