Partager via


ThreadState Énumération

Définition

Spécifie les états d’exécution d’un Thread.

Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.

public enum class ThreadState
[System.Flags]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ThreadState
[System.Flags]
[System.Serializable]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
[<System.Flags>]
type ThreadState = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadState = 
[<System.Flags>]
[<System.Serializable>]
type ThreadState = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ThreadState = 
Public Enum ThreadState
Héritage
ThreadState
Attributs

Champs

Nom Valeur Description
Running 0

Le thread a été démarré et n’a pas encore été arrêté.

StopRequested 1

Le thread est demandé à arrêter. Il s’agit uniquement d’une utilisation interne.

SuspendRequested 2

Le thread est demandé à suspendre.

Background 4

Le thread est exécuté en tant que thread d’arrière-plan, par opposition à un thread de premier plan. Cet état est contrôlé par la définition de la IsBackground propriété.

Unstarted 8

La Start() méthode n’a pas été appelée sur le thread.

Stopped 16

Le thread s’est arrêté.

WaitSleepJoin 32

Le thread est bloqué. Cela peut être le résultat de l’appel Sleep(Int32) ou Join()de la demande d’un verrou , par exemple, en appelant Enter(Object) ou Wait(Object, Int32, Boolean) - ou d’attendre sur un objet de synchronisation de threads tel que ManualResetEvent.

Suspended 64

Le thread a été suspendu.

AbortRequested 128

La Abort(Object) méthode a été appelée sur le thread, mais le thread n’a pas encore reçu l’attente ThreadAbortException qui tentera de l’arrêter.

Aborted 256

L’état du thread inclut AbortRequested et le thread est maintenant mort, mais son état n’a pas encore changé en Stopped.

Remarques

L’énumération ThreadState définit un ensemble de tous les états d’exécution possibles pour les threads. Il n’est intéressant que dans quelques scénarios de débogage. Votre code ne doit jamais utiliser l’état du thread pour synchroniser les activités des threads.

Une fois qu’un thread est créé, il se trouve dans au moins un des états jusqu’à ce qu’il se termine. Les threads créés dans le Common Language Runtime sont initialement dans l’état Unstarted , tandis que les threads externes ou non managés qui entrent dans le runtime sont déjà dans l’état Running . Un thread est passé de l’état Unstarted à l’état Running en appelant Thread.Start. Une fois qu’un thread quitte l’état Unstarted à la suite d’un appel Start, il ne peut jamais revenir à l’état Unstarted .

Un thread peut être dans plusieurs états à un moment donné. Par exemple, si un thread est bloqué sur un appel à Monitor.Wait, et qu’un autre thread appelle Thread.Abort le thread bloqué, le thread bloqué se trouve à la fois dans les états et AbortRequested les WaitSleepJoin états en même temps. Dans ce cas, dès que le thread retourne de l’appel à l’appel ou Monitor.Wait est interrompu, il reçoit l’abandon ThreadAbortException . Toutes les combinaisons de ThreadState valeurs ne sont pas valides ; par exemple, un thread ne peut pas être dans les états et Unstarted les Aborted états.

Un thread ne peut jamais quitter l’état Stopped .

Important

Il existe deux énumérations d’état de thread : System.Threading.ThreadState et System.Diagnostics.ThreadState.

Le tableau suivant montre les actions qui provoquent un changement d’état.

Action ThreadState
Un thread est créé dans le Common Language Runtime. Unstarted
Un autre thread appelle la Thread.Start méthode sur le nouveau thread et l’appel retourne.

La Start méthode ne retourne pas tant que le nouveau thread n’a pas commencé à s’exécuter. Il n’existe aucun moyen de savoir à quel moment le nouveau thread commence à s’exécuter, pendant l’appel à Start.
Running
Appels de threads Sleep WaitSleepJoin
Le thread appelle Monitor.Wait un autre objet. WaitSleepJoin
Le thread appelle Join sur un autre thread. WaitSleepJoin
Autres appels de threads Interrupt Running
Autres appels de threads Suspend SuspendRequested
Le thread répond à une Suspend demande. Suspended
Autres appels de threads Resume Running
Autres appels de threads Abort AbortRequested
Le thread répond à une Abort demande. Stopped
Un thread est arrêté. Stopped

Outre les états indiqués ci-dessus, il existe également l’état Background , qui indique si le thread s’exécute en arrière-plan ou au premier plan. Pour plus d’informations, consultez Threads de premier plan et d’arrière-plan.

La Thread.ThreadState propriété d’un thread fournit l’état actuel d’un thread. Les applications doivent utiliser un masque de bits pour déterminer si un thread est en cours d’exécution. Étant donné que la valeur de Running zéro (0), testez si un thread est en cours d’exécution par le code suivant :

(myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
(myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0

S’applique à

Voir aussi