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

La 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. Solo tiene interés 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 los subprocesos.Your code should never use the thread state to synchronize the activities of threads.

Una vez que se crea un subproceso, se encuentra 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 dentro del Common Language Runtime se Unstarted encuentran inicialmente en el estado, mientras que los externos o no administrados, los subprocesos que Running entran en el tiempo de ejecución ya están en el 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 pasa Unstarted del estado Running al 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 se bloquea en una llamada Monitor.Waita, y otro subproceso llama Thread.Abort a en el subproceso bloqueado, el subproceso bloqueado WaitSleepJoin estará AbortRequested en los Estados y 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, en cuanto el subproceso vuelva de la llamada a Monitor.Wait o se interrumpa, recibirá el ThreadAbortException para comenzar la anulación.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 ThreadState de valores son válidas; por ejemplo, un subproceso no puede Aborted estar Unstarted en los Estados y.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 de estado de subprocesos: System.Threading.ThreadState y. System.Diagnostics.ThreadStateThere are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

En la tabla siguiente se muestran 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 del Common Language Runtime.A thread is created within the common language runtime. Unstarted
Otro subproceso llama Thread.Start al método en el nuevo subproceso y la llamada devuelve.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 haya 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 el nuevo subproceso comenzará a ejecutarse durante la Startllamada a.There is no way to know at what point the new thread will start running, during the call to Start.
Running
El subproceso llama aSleepThe 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 aInterruptAnother thread calls Interrupt Running
Otro subproceso llama aSuspendAnother thread calls Suspend SuspendRequested
El subproceso responde a una solicitud Suspend.The thread responds to a Suspend request. Suspended
Otro subproceso llama aResumeAnother thread calls Resume Running
Otro subproceso llama aAbortAnother thread calls Abort AbortRequested
El subproceso responde a una Abort solicitud.The thread responds to an Abort request. Stopped
Se termina un subproceso.A thread is terminated. Stopped

Además de los Estados indicados anteriormente, también hay el Background estado, que indica si el subproceso se está ejecutando en segundo plano o en 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.

La 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 Running de es cero (0), compruebe si un subproceso está ejecutando 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: