Die Beendigung anderer Threads abwarten
Nach oben zu Die Thread-Funktion schreiben
Ein Thread-Objekt startet, sobald die Methode Execute ausgeführt wird (siehe Thread-Objekte ausführen). Der Thread bleibt aktiv, solange die Methode Execute läuft. Dahinter steht das Prinzip, dass der Thread eine bestimmte Aufgabe ausführt und nach deren Erledigung stoppt. Zuweilen ist es allerdings notwendig, dass ein Thread beendet wird, wenn eine bestimmte externe Bedingung erfüllt ist.
Es ist möglich, Threads so zu konfigurieren, dass sie den Zeitpunkt anzeigen, zu dem ein anderer Thread seine Ausführung beenden soll. Diese Signalisierung erfolgt über die Eigenschaft Terminated. Wenn ein Thread versucht, einen anderen zur Beendigung zu veranlassen, ruft er die Methode Terminate dieses anderen Threads auf. Terminate setzt die Eigenschaft Terminated des Threads, der beendet werden soll, auf True. Nun liegt es bei der Execute-Methode dieses Threads, die Methode Terminate so zu implementieren, dass sie die Eigenschaft Terminated abfragt und entsprechend reagiert. Das folgende Beispiel zeigt eine solche Möglichkeit:
procedure TMyThread.Execute;
begin
while not Terminated do
PerformSomeTask;
end;
void __fastcall TMyThread::Execute() {
while (!Terminated)
PerformSomeTask();
}