z.B. kann man das mit Klassenmethoden machen. Da kannst du jederzeit abfragen, ob noch ein Thread läuft, auch wenn das Objekt selber nicht mehr existiert:
Delphi-Quellcode:
type
tmythread =
class(TThread)
private
{ Private-Deklarationen }
protected
procedure Execute;
override;
public
class function isrunning:boolean;
end;
implementation
var running:integer=0;
{}
procedure tmythread.Execute;
begin
inc(running);
{ Thread-Code hier einfügen }
dec(running);
end;
class function tmythread.isrunning:boolean;
begin
result:=running>0;
end;
inc und
dec kann man auch in den constructor/destructor schreiben.
Dein Fehler kennn ich nicht. Aber ich würde vermuten, dass der Thread noch nicht beendet ist, wenn du den Hauptthread schließt. Fragst du in execute regelmäßig die Variable terminated ab?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.