Esta documentación está archivada y no tiene mantenimiento.

ThreadState (Enumeración)

Especifica los estados de ejecución de Thread.

La enumeración tiene un atributo FlagsAttribute que permite una combinación bit a bit de los valores de miembro.

Espacio de nombres: System.Threading
Ensamblado: mscorlib (en mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[FlagsAttribute] 
public enum ThreadState
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute FlagsAttribute() */ 
public enum ThreadState
SerializableAttribute 
ComVisibleAttribute(true) 
FlagsAttribute 
public enum ThreadState

 Nombre de miembroDescripción
AbortedEl estado del subproceso incluye AbortRequested y el subproceso está ahora inactivo, pero su estado no ha cambiado todavía a Stopped
AbortRequestedSe ha invocado al método Thread.Abort en el subproceso, pero el subproceso aún no ha recibido la excepción System.Threading.ThreadAbortException pendiente que intentará finalizarlo. 
BackgroundEl subproceso está ejecutándose como subproceso en segundo plano, por oposición a un subproceso en primer plano. Para controlar este estado, hay que establecer la propiedad Thread.IsBackground
RunningEl subproceso se ha iniciado, no está bloqueado y no existe una excepción ThreadAbortException pendiente. 
StoppedEl subproceso se ha detenido. 
StopRequestedSe ha solicitado que el subproceso se detenga. Esto último sólo se refiere al uso interno. 
SuspendedEl subproceso se ha suspendido. 
SuspendRequestedSe ha solicitado que el subproceso se suspenda. 
UnstartedNo se ha invocado al método Thread.Start en el subproceso. 
WaitSleepJoinSubproceso bloqueado. Éste podría ser el resultado de llamar a Thread.Sleep o Thread.Join, de solicitar un bloqueo (por ejemplo, llamando a Monitor.Enter o Monitor.Wait) o de esperar en un objeto de sincronización de subprocesos como ManualResetEvent.  

ThreadState define un conjunto de todos los estados de ejecución posibles para los subprocesos. Una vez que se crea un subproceso, éste siempre se encuentra en al menos uno de los estados hasta que termina. Los subprocesos creados dentro de Common Language Runtime se encuentran inicialmente en estado Unstarted, mientras que los subprocesos externos que entran en el motor en tiempo de ejecución ya se encuentran en estado Running. Para que un subproceso Unstarted pase al estado Running, hay que llamar a Start. No todas las combinaciones de valores de ThreadState son válidas; por ejemplo, un subproceso no puede encontrarse en estado Aborted y estado Unstarted a la vez.

NotaImportante:

Hay dos enumeraciones de estado de subprocesos, System.Threading.ThreadState y System.Diagnostics.ThreadState. Las enumeraciones del estado de los subprocesos sólo son de interés en algunos escenarios de depuración. El código nunca debe utilizar el estado de los subprocesos para sincronizar las actividades de los subprocesos.

En la siguiente tabla se muestran las acciones que provocan un cambio de estado.

Acción

ThreadState

Se crea un subproceso dentro de Common Language Runtime.

Unstarted

Un subproceso llama a Start

Unstarted

El subproceso comienza a ejecutarse.

Running

El subproceso llama a Sleep

WaitSleepJoin

El subproceso llama a Wait en otro objeto.

WaitSleepJoin

El subproceso llama a Join en otro subproceso.

WaitSleepJoin

Otro subproceso llama a Interrupt

Running

Otro subproceso llama a Suspend

SuspendRequested

El subproceso responde a una solicitud Suspend.

Suspended

Otro subproceso llama a Resume

Running

Otro subproceso llama a Abort

AbortRequested

El subproceso responde a una solicitud Abort.

Stopped

Finaliza un subproceso.

Stopped

Además de los estados anteriormente mencionados, también existe el estado Background, que indica si el subproceso está ejecutándose en primer plano o en segundo plano.

En un momento dado, el subproceso puede encontrarse en más de un estado. Por ejemplo, si un subproceso se bloquea en una llamada a Wait, y otro subproceso llama a Abort en el subproceso bloqueado, el subproceso bloqueado se encontrará en estado WaitSleepJoin y en estado AbortRequested al mismo tiempo. En tal caso, en cuanto el subproceso se devuelva a partir de la llamada a Wait o en cuanto se interrumpa, recibirá la excepción ThreadAbortException para que comience su anulación.

La propiedad Thread.ThreadState de un subproceso proporciona el estado actual de un subproceso. Las aplicaciones deben utilizar una máscara de bits para determinar si se está ejecutando un subproceso. Como el valor de Running es cero (0), hay que comprobar si se está ejecutando un subproceso que utilice código de C# de tipo (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0 o código de Visual Basic de tipo (myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0.

Windows 98, Windows 2000 Service Pack 4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0
Mostrar: