Bitte benutze Delphi-Tags. Wenn du Beiträge schreibst, ist es der kleine Helm links vom Google-Symbol oben in der Leiste über den Eingabefeld.
Bitte sofort Sachen wie das with-Statement und TThread.Resume vergessen.
Auch in XE5 müsste schon sowas in der Klassendefinition stehen wie:
Delphi-Quellcode:
// This function is not intended to be used for thread synchronization.
procedure Resume; deprecated;
Das
deprecated;
ist ein Schlüsselwort, um darauf hinzuweisen, dass diese
API veraltet ist und nicht mehr benutzt werden soll.
Die Fragen:
1. Jein, dafür ist das wohl nicht gedacht. Du kannst es aber zur Identifizierung für in <siehe 2.> nutzen.
2. ThreadTerminated wird im Kontext des Mainthreads (da wo dein Formular drin läuft) aufgerufen und signalisiert, dass der externe Thread beendet ist. Was du darin machst bleibt dir überlassen.
Denkbar wäre z.B.:
Delphi-Quellcode:
procedure TForm1.ThreadTerminated(Sender: TObject);
begin
if Sender is TMyThread then
begin
ShowMessage(TMyThread(Sender).Counter.ToString + ' is gone to hell!');
end;
end;
Wie du siehst ist das Argument Sender in diesen Fall die noch lebende Instanz von TMyThread, kurz bevor er freigeben wird (durch dein FreeOnTerminate:=True; )
Noch was: Bitte benutze Strg + D oder Edit -> Format Source um den Quelltext nach dem eingestellten Standard zu formatieren.