Einzelnen Beitrag anzeigen

Riese

Registriert seit: 17. Nov 2005
16 Beiträge
 
Delphi 5 Standard
 
#1

Thread und Indy - Programmabsturz

  Alt 1. Dez 2005, 08:33
Hallo zusammen,

setze seit kurzem die Indy Komponenten ein.
Dabei vor allem die TIdTCPClient Komponente mit der ich einen Server kontaktiere.

Dabei liegt die Komponente auf einem Formular Form1.

Ich habe einen von TThread abgeleiteten Thread.

Im Thread lese ich mittels IdTCPClient1.ReadBuffer aus dem Client.

Je nach übermitteltem Kommando reagiere ich entsprechend im Thread.
Im Thread benutze ich dann zum Schreiben in ein Memo-Feld auf Form1 die Synchronize Methode.

Geht alles. Aber wenn ich mein Programm beende wird nur das Hauptformular Form1 beendet. Der Thread wird nicht beendet. Ich habe in OnFormDestroy (Form1) einen Aufruf myThread->Terminate drin.
Aber der funktioniert nicht da ich im Thread Terminated zwar abprüfe aber der Thread ja noch beim Einlesen von der IndyKompo hängt.
Denkt ihr dass ein TIdTCPClient-Timeout das Problem löst?

Manchmal kommt es auch vor, dass direkt nach dem Programmende der Thread abstürzt. Wie ist denn das mit Synchronize? Braucht man das beim Zugriff auf alle Komponenten auf dem Hauptformular oder nur bei den sichtbaren. Muss man also den Zugriff auf meine Form1.IdTCPClient1 Komponente auch in Syhronize kapseln?

Gruß und Danke
Riese
  Mit Zitat antworten Zitat