Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Thread stürzt ab Indy TCPIP Client
9. Jan 2015, 12:24
Deine Execute-Methode ist irgendwie zu lang und unhandlich ... (würde ich so nie implementieren). Teile die auf, dann wird das wesentlich einfacher:
Delphi-Quellcode:
TFoo.Execute;
var
LClient : TClient;
begin
LClient := nil;
try
while not Terminated do
try
// Eine Client-Instanz garantieren
if not Assigned( LClient ) then
begin
LClient := TClient.Create;
end;
ExecuteOnCLient( LClient );
except
on E: EIdSpecialException do
begin
// Loggen der Exception
// Client benötigt nur einen Reset
LClient.Reset;
end;
on E: EIdException do
begin
// Loggen der Exception
// Zerstören der Client-Instanz
FreeAndNil( LClient );
end;
on E: Exception do
begin
// Loggen der Exception
raise; // Exception raisen -> der Thread wird beendet
end;
end;
finally
LClient.Free;
end;
end;
procedure TFoo.ExecuteOnCLient( AClient : TClient );
begin
// Hier geht es jetzt los mit der eigentlichen Verarbeitung
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo ( 9. Jan 2015 um 12:33 Uhr)
|