Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Thread stürzt ab Indy TCPIP Client

  Alt 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)
  Mit Zitat antworten Zitat