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