Thema: Delphi Pinger Tool

Einzelnen Beitrag anzeigen

Balthasar

Registriert seit: 11. Jan 2009
9 Beiträge
 
#1

Pinger Tool

  Alt 19. Aug 2013, 18:09
Hallöchen! Ich versuche in Delphi ein Chat-Programm zu realisieren und arbeite mit den alten ClientSocket und ServerSocket Komponenten. Im Moment hänge ich bei folgendem Problem:
Meine Klasse TPinger leitet sich von TThread ab, ich versuche zu jeder vollen Sekunde alle am Chat beteiligten Personen zu pingen. Die PING() Methode im Code unten macht lediglich folgendes: Socket.SendText('PING!');
Delphi-Quellcode:
procedure TPinger.Execute;
begin
    while not Terminated or (benutzer <> nil) or (benutzer.getSocket <> nil) do
    begin
      benutzer.PING();
      Sleep(1000);
    end;
end;
So weit so gut. Das Programm startet und läuft auch ohne Probleme, die Pings kommen zügig an und alles scheint bestens. Beim Disconnecten des Clients jedoch, crasht das Programm vollständig. Fehlermeldung gibt es keine direkt. Läuft die Anwendung außerhalb der Entwicklungsumgebung, so crasht sie einfach ("Projekt1.exe funktioniert nicht mehr und muss beendet werden."). Lasse ich das Projekt innerhalb der Entwicklungsumgebung zum Fehler kommen, poppt der Debugger auf und zeigt mir irgendeinen Assembler-Code oder so.

Mein Verdacht liegt darin, dass der Thread trotz Anweisung bei fehlendem "Benutzerobjekt" oder dem fehlenden Socket des Benutzerobjekts abzubrechen einfach nicht abbricht sondern ins leere tritt und stirbt. Jemand ne idee wie ich das Problem lösen könnte?

Mfg
Balthasar
  Mit Zitat antworten Zitat