System.Classes.TThread.FreeOnTerminate

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

property FreeOnTerminate: Boolean read FFreeOnTerminate write SetFreeOnTerminate;

C++

__property bool FreeOnTerminate = {read=FFreeOnTerminate, write=SetFreeOnTerminate, nodefault};

Propriétés

Type Visibilité  Source Unité  Parent
property public
System.Classes.pas
System.Classes.hpp
System.Classes TThread

Description

Détermine si l'objet thread est automatiquement détruit lorsque le thread s'achève.

Affectez la valeur true à FreeOnTerminate si vous ne voulez pas détruire explicitement des threads après qu'ils ont achevé leur exécution. Quand FreeOnTerminate a la valeur false, l'objet thread doit être explicitement détruit dans le code de l'application.

Avertissement : Quand FreeOnTerminate a la valeur true, la méthode Execute doit exécuter puis libérer le thread avant que votre application puisse exécuter la ligne de code suivante. Donc, vous ne devez appeler aucune méthode de l'objet thread quand FreeOnTerminate a la valeur true sauf si vous créez le thread dans un état suspendu.

Le mieux est de laisser FreeOnTerminate pour les threads qui effectuent une tâche tout simplement, puis terminent naturellement. Dans l'éventualité où vous voudriez communiquer avec les threads ou interagir avec eux de toute autre manière, y compris leur dire quand s'achever, FreeOnTerminate ne doit jamais être utilisée.

Appeler Free sur un TThread définit Terminated := True puis le bloque jusqu'à ce que le thread s'achève. Vous pouvez utiliser FreeAndNil() au cas où vous voulez définir la variable sur nil. Lorsque Free renvoie, le thread est terminé et l'instance de TThread n'est plus valide. Vous pouvez appeler Terminate à tout moment et à plusieurs fois (elle ne fait que définir la propriété, Terminated := True). Si Terminated est déjà définie sur True, appeler Free l'appelle simplement de nouveau, ce qui n'invalide pas la proposition précédente. Elle bloque l'appelant jusqu'à ce que le thread lui-même s'achève.

Voir aussi

Exemples de code