ThreadState ThreadState ThreadState ThreadState Enum

Définition

Spécifie les états d'exécution de Thread.Specifies the execution states of a Thread.

Cette énumération a un attribut FlagsAttribute qui permet une combinaison au niveau du bit de ses valeurs membres.

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

Champs

Aborted Aborted Aborted Aborted 256

L'état du thread inclut AbortRequested et le thread est à présent inactif ; toutefois, son état n'est pas encore passé à Stopped.The thread state includes AbortRequested and the thread is now dead, but its state has not yet changed to Stopped.

AbortRequested AbortRequested AbortRequested 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.The Abort(Object) method has been invoked on the thread, but the thread has not yet received the pending ThreadAbortException that will attempt to terminate it.

Background Background Background Background 4

Le thread est exécuté en tant que thread d'arrière-plan, par opposition à un thread de premier plan.The thread is being executed as a background thread, as opposed to a foreground thread. Cet état est contrôlé par définition de la propriété IsBackground.This state is controlled by setting the IsBackground property.

Running Running Running Running 0

Le thread a été démarré et n’est pas encore arrêté.The thread has been started and not yet stopped.

Stopped Stopped Stopped Stopped 16

Le thread s'est arrêté.The thread has stopped.

StopRequested StopRequested StopRequested StopRequested 1

Une demande d'arrêt du thread est en cours.The thread is being requested to stop. Ceci est exclusivement destiné à un usage interne.This is for internal use only.

Suspended Suspended Suspended Suspended 64

Le thread a été suspendu.The thread has been suspended.

SuspendRequested SuspendRequested SuspendRequested SuspendRequested 2

Une demande de suspension du thread est en cours.The thread is being requested to suspend.

Unstarted Unstarted Unstarted Unstarted 8

La méthode Start() n'a pas été appelée sur le thread.The Start() method has not been invoked on the thread.

WaitSleepJoin WaitSleepJoin WaitSleepJoin WaitSleepJoin 32

Le thread est bloqué.The thread is blocked. 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.This could be the result of calling Sleep(Int32) or Join(), of requesting a lock - for example, by calling Enter(Object) or Wait(Object, Int32, Boolean) - or of waiting on a thread synchronization object such as ManualResetEvent.

Remarques

L' ThreadState énumération définit un ensemble de tous les États d’exécution possibles pour les threads.The ThreadState enumeration defines a set of all possible execution states for threads. Ce n’est utile que dans quelques scénarios de débogage.It's of interest only in a few debugging scenarios. Votre code ne doit jamais utiliser l’état du thread pour synchroniser les activités des threads.Your code should never use the thread state to synchronize the activities of threads.

Une fois qu’un thread est créé, il se trouve dans au moins l’un des États jusqu’à ce qu’il se termine.Once a thread is created, it's in at least one of the states until it terminates. Les threads créés dans le Common Language Runtime sont initialement Unstarted à l’État, tandis que les threads externes ou non managés, qui entrent dans le Running Runtime, sont déjà dans l’État.Threads created within the common language runtime are initially in the Unstarted state, while external, or unmanaged, threads that come into the runtime are already in the Running state. Un thread passe de l' Unstarted État à l' Running État en appelant Thread.Start.A thread is transitioned from the Unstarted state into the Running state by calling 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 .Once a thread leaves the Unstarted state as the result of a call to Start, it can never return to the Unstarted state.

Un thread peut être dans plusieurs États à un moment donné.A thread can be in more than one state at a given time. Par exemple, si un thread est bloqué sur un appel à Monitor.Wait, et qu’un autre Thread.Abort thread appelle sur le thread bloqué, le thread bloqué se trouve à WaitSleepJoin la AbortRequested fois dans les États et en même temps.For example, if a thread is blocked on a call to Monitor.Wait, and another thread calls Thread.Abort on the blocked thread, the blocked thread will be in both the WaitSleepJoin and AbortRequested states at the same time. Dans ce cas, dès que le thread retourne de l’appel à Monitor.Wait ou est interrompu, il reçoit le pour commencer l' ThreadAbortException abandon.In this case, as soon as the thread returns from the call to Monitor.Wait or is interrupted, it will receive the ThreadAbortException to begin aborting. Toutes les combinaisons de ThreadState valeurs ne sont pas valides; par exemple, un thread ne peut Aborted pas Unstarted être à la fois dans les États et.Not all combinations of ThreadState values are valid; for example, a thread cannot be in both the Aborted and Unstarted states.

Un thread ne peut jamais quitter l’état Stopped .A thread can never leave the Stopped state.

Important

Il existe deux énumérations d’état de System.Threading.ThreadState thread System.Diagnostics.ThreadState: et.There are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

Le tableau suivant présente les actions qui provoquent un changement d’État.The following table shows the actions that cause a change of state.

ActionAction ThreadStateThreadState
Un thread est créé dans le common language runtime.A thread is created within the common language runtime. Unstarted
Un autre thread appelle Thread.Start la méthode sur le nouveau thread, et l’appel retourne.Another thread calls the Thread.Start method on the new thread, and the call returns.

La Start méthode n’est pas retournée tant que le nouveau thread n’a pas commencé à s’exécuter.The Start method does not return until the new thread has started running. Il n’existe aucun moyen de savoir à quel moment le nouveau thread commencera à s’exécuter, pendant Startl’appel à.There is no way to know at what point the new thread will start running, during the call to Start.
Running
Le thread appelleSleepThe thread calls Sleep WaitSleepJoin
Le thread appelle Monitor.Wait sur un autre objet.The thread calls Monitor.Wait on another object. WaitSleepJoin
Le thread appelle Join sur un autre thread.The thread calls Join on another thread. WaitSleepJoin
Un autre thread appelleInterruptAnother thread calls Interrupt Running
Un autre thread appelleSuspendAnother thread calls Suspend SuspendRequested
Le thread répond à une demande Suspend .The thread responds to a Suspend request. Suspended
Un autre thread appelleResumeAnother thread calls Resume Running
Un autre thread appelleAbortAnother thread calls Abort AbortRequested
Le thread répond à une Abort demande.The thread responds to an Abort request. Stopped
Un thread se termine.A thread is terminated. Stopped

Outre les États indiqués ci-dessus, il existe également un Background État qui indique si le thread s’exécute en arrière-plan ou au premier plan.In addition to the states noted above, there is also the Background state, which indicates whether the thread is running in the background or foreground. Pour plus d’informations, consultez Threads de premier plan et d’arrière-plan.For more information, see Foreground and Background Threads.

La Thread.ThreadState propriété d’un thread fournit l’état actuel d’un thread.The Thread.ThreadState property of a thread provides the current state of a thread. Les applications doivent utiliser un masque de bits pour déterminer si un thread est en cours d’exécution.Applications must use a bit mask to determine whether a thread is running. Étant donné que la Running valeur de est égale à zéro (0), testez si un thread est en cours d’exécution par le code suivant:Since the value for Running is zero (0), test whether a thread is running by the following code:

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

S’applique à

Voir aussi