Wenn du möchtest, dass ein Thread seine Arbeit beendet, dann rufe die Methode
TThread.Terminate auf.
Innerhalb des Threads kannst du die Eigenschaft
TThread.Terminated (
protected
) abfragen, ob es da einen
Wunsch nach Beendigung gibt.
Zusätzlich gibt es auch die Methode
TThread.TerminatedSet die man überschreiben kann. Diese wird beim erstmaligen Aufruf von
TThread.Terminate aufgerufen.
Grundsätzlich entscheidet der Thread immer selber ob er sich nun beendigt oder nicht, denn nur der Thread selber weiß um seinen Zustand und wann dieser gefahrlos verlassen werden kann.
Eine simple Execute-Methode in einem Thread sieht z.B. so aus:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
while not Terminated do
begin
// mach was simuliertes
Sleep(10);
end;
end;
Der läuft jetzt so lange, bis man
TThread.Terminate aufruft (was im Übrigen von
TThread.Destroy intern auch aufgerufen wird).