AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Thread stürzt ab Indy TCPIP Client
Thema durchsuchen
Ansicht
Themen-Optionen

Thread stürzt ab Indy TCPIP Client

Ein Thema von Barthiboy · begonnen am 9. Jan 2015 · letzter Beitrag vom 13. Jan 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Thread stürzt ab Indy TCPIP Client

  Alt 9. Jan 2015, 11: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 11:33 Uhr)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#2

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 06:09
Danke für deine Antworten.

ich habe noch folgende Probleme:
TIdTCPClient.Reset gibt es bei mir nicht v.10.6.0.504.
EIdSpecialException gibt es bei mir nicht v.10.6.0.504. Oder ich kanns nicht finden.

Aber sonst sieht es so aus als hättest du mir viel weiter geholfen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 08:05
Und wo hast du TFoo und TClient gefunden?

Der Code ist nur dazu da, das Prinzip zu erläutern und keine CopyPaste Lösung. Anfangen würde ich auch zunächst auch damit, bei jeder Indy Exception EIdException den Client einfach aus dem Speicher zu entfernen.

Dann schaut man sich das Log an und die aufgetretenen Exceptions und prüft, bei welcher Exception man noch etwas retten könnte. Allerdings wäre es mir auch egal, denn wenn der Betrieb so gewährleistet werden kann ... who cares? Da bräuchte ich schon bessere Gründe.
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)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#4

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 08:15
OK. Prinzip is jetzt klar.
Du hast mir viel geholfen. Vielen Dank.

Die Verbindungsprobleme, die ich hervorrufen konnte sind somit alle beseitigt.
Jetzt muss ich mir nur überlegen, was ich bei einer Zugriffsverletzung usw. mache.
Aber das soll (bis jetzt) mal noch nicht dein Problem sein
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 08:21
Bei einer Zugriffsverletzung hast du einen Programm-Fehler. Wie soll man darauf reagieren? Wenn man darauf reagieren kann, dann braucht man nicht mehr reagieren, denn man hat den ja beseitigt
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)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Thread stürzt ab Indy TCPIP Client

  Alt 13. Jan 2015, 07:20
Bei einer Zugriffsverletzung hast du einen Programm-Fehler. Wie soll man darauf reagieren?
Eine Zugrifssverletzung wird als EAccessViolation gemeldet, das ist doch auch 'nur' eine Exception, die man in manchen Fällen sauber behandeln kann. Man kann nicht ihre Ursache beheben - z.B. fehlerhafte Daten, die im Code nicht berücksichtigt wurden - aber man kann doch dafür Sorge tragen dass das Programm anschliessend weiterläuft, z.B. die fehlerhaften Daten protokolliert und dann mit den nächsten Daten die Verarbeitung fortsetzt.
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz