ThreadState ThreadState ThreadState ThreadState Enum

Definición

Especifica los estados de ejecución de Thread.Specifies the execution states of a Thread.

Esta enumeración tiene el atributo FlagsAttribute, que permite una combinación bit a bit de sus valores de miembro.

public enum class ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
type ThreadState = 
Public Enum ThreadState
Herencia
Atributos

Campos

Aborted Aborted Aborted Aborted 256

El estado del subproceso incluye AbortRequested y el subproceso está ahora inactivo, pero su estado no ha cambiado todavía a 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

Se ha invocado al método Abort(Object) en el subproceso, pero el subproceso aún no ha recibido la excepción ThreadAbortException pendiente que intentará finalizarlo.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

El subproceso está ejecutándose como subproceso en segundo plano, por oposición a un subproceso en primer plano.The thread is being executed as a background thread, as opposed to a foreground thread. Para controlar este estado, hay que establecer la propiedad IsBackground.This state is controlled by setting the IsBackground property.

Running Running Running Running 0

El subproceso se ha iniciado y aún no se ha detenido.The thread has been started and not yet stopped.

Stopped Stopped Stopped Stopped 16

El subproceso se ha detenido.The thread has stopped.

StopRequested StopRequested StopRequested StopRequested 1

Se ha solicitado que el subproceso se detenga.The thread is being requested to stop. Esto último sólo se refiere al uso interno.This is for internal use only.

Suspended Suspended Suspended Suspended 64

El subproceso se ha suspendido.The thread has been suspended.

SuspendRequested SuspendRequested SuspendRequested SuspendRequested 2

Se ha solicitado que el subproceso se suspenda.The thread is being requested to suspend.

Unstarted Unstarted Unstarted Unstarted 8

No se ha invocado al método Start() en el subproceso.The Start() method has not been invoked on the thread.

WaitSleepJoin WaitSleepJoin WaitSleepJoin WaitSleepJoin 32

Subproceso bloqueado.The thread is blocked. Este podría ser el resultado de llamar a Sleep(Int32) o Join(), de solicitar un bloqueo (por ejemplo, llamando a Enter(Object) o Wait(Object, Int32, Boolean)) o de esperar en un objeto de sincronización de subprocesos como 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.

Comentarios

El ThreadState enumeración define un conjunto de todos los Estados de ejecución posibles para los subprocesos.The ThreadState enumeration defines a set of all possible execution states for threads. Resulta de interés sólo en algunos escenarios de depuración.It's of interest only in a few debugging scenarios. El código nunca debe usar el estado del subproceso para sincronizar las actividades de subprocesos.Your code should never use the thread state to synchronize the activities of threads.

Una vez que se crea un subproceso, está en al menos uno de los Estados hasta que termina.Once a thread is created, it's in at least one of the states until it terminates. Los subprocesos creados en common language runtime se encuentran inicialmente en el Unstarted estado mientras externo, o no administrada, los subprocesos que entran en el tiempo de ejecución ya están en el Running estado.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 subproceso realice la transición desde el Unstarted estado en el Running estado mediante una llamada a Thread.Start.A thread is transitioned from the Unstarted state into the Running state by calling Thread.Start. Una vez que un subproceso abandona el estado Unstarted como resultado de una llamada a Start, nunca puede volver al estado 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 subproceso puede estar en más de un estado en un momento dado.A thread can be in more than one state at a given time. Por ejemplo, si un subproceso está bloqueado en una llamada a Monitor.Waity otro subproceso llama Thread.Abort en el subproceso bloqueado, el subproceso bloqueado estará en ambos el WaitSleepJoin y AbortRequested Estados al mismo tiempo.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. En este caso, tan pronto como el subproceso vuelve de la llamada a Monitor.Wait o se interrumpe, recibirá el ThreadAbortException para empezar a anular.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. No todas las combinaciones de ThreadState valores son válidos; por ejemplo, un subproceso no puede ser tanto en el Aborted y Unstarted Estados.Not all combinations of ThreadState values are valid; for example, a thread cannot be in both the Aborted and Unstarted states.

Un subproceso nunca puede abandonar el estado Stopped .A thread can never leave the Stopped state.

Importante

Hay dos enumeraciones del estado de subproceso: System.Threading.ThreadState y System.Diagnostics.ThreadState.There are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

La siguiente tabla muestra las acciones que provocan un cambio de estado.The following table shows the actions that cause a change of state.

AcciónAction ThreadStateThreadState
Se crea un subproceso dentro de common language runtime.A thread is created within the common language runtime. Unstarted
Otro subproceso llama a la Thread.Start devuelve el método en el nuevo subproceso y la llamada.Another thread calls the Thread.Start method on the new thread, and the call returns.

El Start método no vuelve hasta que el nuevo subproceso ha empezado a ejecutarse.The Start method does not return until the new thread has started running. No hay ninguna manera de saber en qué punto se iniciará el nuevo subproceso está ejecutando, durante la llamada a Start.There is no way to know at what point the new thread will start running, during the call to Start.
Running
El subproceso llama a SleepThe thread calls Sleep WaitSleepJoin
El subproceso llama a Monitor.Wait en otro objeto.The thread calls Monitor.Wait on another object. WaitSleepJoin
El subproceso llama a Join en otro subproceso.The thread calls Join on another thread. WaitSleepJoin
Otro subproceso llama a InterruptAnother thread calls Interrupt Running
Otro subproceso llama a SuspendAnother thread calls Suspend SuspendRequested
El subproceso responde a una solicitud Suspend.The thread responds to a Suspend request. Suspended
Otro subproceso llama a ResumeAnother thread calls Resume Running
Otro subproceso llama a AbortAnother thread calls Abort AbortRequested
El subproceso responde a un Abort solicitud.The thread responds to an Abort request. Stopped
Finaliza un subproceso.A thread is terminated. Stopped

Además de los Estados que se ha indicado anteriormente, también hay la Background estado, que indica si se está ejecutando el subproceso en segundo plano o primer plano.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. Para obtener más información, vea Subprocesos de primer y segundo plano.For more information, see Foreground and Background Threads.

El Thread.ThreadState propiedad de un subproceso proporciona el estado actual de un subproceso.The Thread.ThreadState property of a thread provides the current state of a thread. Las aplicaciones deben usar una máscara de bits para determinar si un subproceso se está ejecutando.Applications must use a bit mask to determine whether a thread is running. Puesto que el valor de Running es cero (0), comprobar si un subproceso se está ejecutando en el código siguiente: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

Se aplica a

Consulte también: