Partager via


ThreadState Énumération

Définition

Spécifie les états d'exécution de 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

Aborted 256

L'état du thread inclut AbortRequested et le thread est à présent inactif ; toutefois, son état n'est pas encore passé à Stopped.

AbortRequested 128

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

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 définition de la propriété IsBackground.

Running 0

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

Stopped 16

Le thread s'est arrêté.

StopRequested 1

Une demande d'arrêt du thread est en cours. Ceci est exclusivement destiné à un usage interne.

Suspended 64

Le thread a été suspendu.

SuspendRequested 2

Une demande de suspension du thread est en cours.

Unstarted 8

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

WaitSleepJoin 32

Le thread est bloqué. Cela peut résulter de l’appel de Sleep(Int32) ou Join(), d’une demande de verrouillage (par exemple l’appel de Enter(Object) ou Wait(Object, Int32, Boolean)) ou de l’attente d’un objet de synchronisation de threads tel que ManualResetEvent.

Remarques

L’énumération ThreadState définit un ensemble de tous les états d’exécution possibles pour les threads. Il ne s’intéresse qu’à 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 sur 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 revient de l’appel à Monitor.Wait l’appel ou est interrompu, il reçoit le ThreadAbortException début de l’abandon. Toutes les combinaisons de ThreadState valeurs ne sont pas valides ; par exemple, un thread ne peut pas se trouver dans les états et Unstarted les Aborted deux.

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
Le thread appelle Sleep WaitSleepJoin
Le thread appelle Monitor.Wait sur un autre objet. WaitSleepJoin
Le thread appelle Join sur un autre thread. WaitSleepJoin
Un autre appel de thread Interrupt Running
Un autre appel de thread Suspend SuspendRequested
Le thread répond à une demande Suspend . Suspended
Un autre appel de thread Resume Running
Un autre appel de thread 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 est en cours d’exécution 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