États d'un thread
Mise à jour : novembre 2007
La propriété ThreadState fournit des informations sur l'état d'un thread. Comme les threads peuvent être dans plusieurs états à un même moment, la valeur stockée dans ThreadState peut être une combinaison des valeurs de l'énumération ThreadState. Par exemple, si un thread est bloqué sur un appel à Wait et qu'un autre thread appelle la méthode Abort sur ce même thread, le thread sera simultanément à l'état WaitSleepJoin et AbortRequested.
Changement des états d'un thread
Dès le démarrage d'un thread, vous pouvez appeler ses méthodes pour changer son état. Par exemple, vous pouvez provoquer la suspension d'un thread pendant quelques millisecondes en appelant Thread.Sleep. La méthode Sleep prend comme paramètre un délai d'expiration qui est le nombre de millisecondes pendant lequel le thread reste bloqué.
L'appel de Sleep avec l'argument Infinite entraîne la mise en veille d'un thread jusqu'à son interruption par un autre thread qui appelle Interrupt. La méthode Interrupt libère le thread de destination de l'attente dans laquelle il peut se trouver et entraîne la levée d'une exception.
Vous pouvez également suspendre un thread en appelant Suspend. Lorsqu'un thread appelle Suspend sur lui-même, l'appel bloque jusqu'à ce qu'un autre thread le reprenne en appelant Resume. Lorsqu'un thread appelle Suspend sur un autre thread, l'appel est un appel sans blocage qui entraîne la suspension de l'autre thread. L'appel de Resume permet de mettre un terme à la suspension d'un autre thread et lui fait reprendre son exécution. Contrairement à Sleep, Suspend n'interrompt pas immédiatement un thread ; le thread suspendu ne s'arrête pas tant que le Common Language Runtime n'a pas déterminé qu'il a atteint un point dépourvu de risque.
La méthode Abort interrompt un thread en cours d'exécution en déclenchant une exception ThreadAbortException qui entraîne la mort du thread.
Pour plus d'informations sur ces méthodes, consultez Thread.
Voir aussi
Concepts
Paramètres et valeurs de retour pour les procédures multithread
Multithreading avec des formulaires et contrôles
Délégués et opérateur AddressOf