System.Classes.TThread.FreeOnTerminate
Delphi
property FreeOnTerminate: Boolean read FFreeOnTerminate write SetFreeOnTerminate;
C++
__property bool FreeOnTerminate = {read=FFreeOnTerminate, write=SetFreeOnTerminate, nodefault};
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
property | public | System.Classes.pas System.Classes.hpp |
System.Classes | TThread |
Beschreibung
Legt fest, ob das Thread-Objekt nach Beendigung des Threads automatisch freigegeben wird.
Setzen Sie FreeOnTerminate auf true, wenn Sie Threads nach deren Ausführung nicht explizit freigeben möchten. Wenn FreeOnTerminate den Wert false hat, muss das Thread-Objekt im Programmcode der Anwendung explizit freigegeben werden.
Warnung: Wenn FreeOnTerminate true ist, könnte die Methode Execute ausgeführt werden und der Thread freigegeben werden, bevor die Anwendung die nächste Codezeile ausführen kann. Daher sollten Sie keine Methoden des Thread-Objekts ausführen, wenn FreeOnTerminate true ist, es sei denn, der Thread wird im unterbrochenen Status erzeugt.
FreeOnTerminate soll am besten für Threads verwendet werden, die eine Aufgabe einfach ausführen und anschließend auf eine natürliche Weise beendet werden. Wenn Sie mit dem Thread kommunizieren oder anderweitig mit ihm interagieren möchten, einschließlich um die Beendingungszeit zu bestimmen, sollte FreeOnTerminate nie verwendet werden.
Beim Aufrufen der Methode Free für ein TThread-Objekt wird die Eigenschaft Terminated auf True gesetzt. Danach wird die Methode blockiert bis der Thread beendet ist. Sie können FreeAndNil() verwenden, um die Variable auf nil zu setzen. Nach der Ausführung der Methode Free wird der Thread endgültig gelöscht und die TThread-Instanz ist nicht mehr gültig. Sie können die Methode Terminate jederzeit und beliebig oft aufrufen (es wird nur die Eigenschaft Terminated auf True gesetzt). Wenn Terminated bereits True ist, ruft Free die Eigenschaft einfach erneut auf. Dies stellt keinen Widerspruch zur vorherigen Aussage dar. Der Aufrufer wird bis zur Beendigung des aktuellen Threads blockiert.
Siehe auch