ThreadState Enumeración
TOC
Collapse the table of content
Expand the table of content

ThreadState (Enumeración)

 

Especifica los estados de ejecución de Thread.

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

[<SerializableAttribute>]
[<FlagsAttribute>]
[<ComVisibleAttribute(true)>]
type ThreadState

Nombre de miembroDescripción
Aborted

El estado del subproceso incluye AbortRequested y el subproceso está ahora inactivo, pero su estado no ha cambiado todavía a Stopped.

AbortRequested

Se 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.

Background

El 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.

Running

El subproceso se ha iniciado, no está bloqueado y no existe una excepción ThreadAbortException pendiente.

Stopped

El subproceso se ha detenido.

StopRequested

Se ha solicitado que el subproceso se detenga.Esto último sólo se refiere al uso interno.

Suspended

El subproceso se ha suspendido.

SuspendRequested

Se ha solicitado que el subproceso se suspenda.

Unstarted

No se ha invocado al método Thread.Start en el subproceso.

WaitSleepJoin

Subproceso bloqueado.Este 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.

La enumeración ThreadState solo es 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.

ThreadState define un conjunto de todos los estados de ejecución posibles para los subprocesos.Una vez que se crea un subproceso, este 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.

System_CAPS_importantImportante

Hay dos enumeraciones de estado de subprocesos, System.Threading.ThreadState y System.Diagnostics.ThreadState.

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

Otro subproceso llama al método Thread.Start en el nuevo subproceso y la llamada devuelve un valor.

El método Start no vuelve hasta que el nuevo subproceso haya empezado a ejecutarse.No hay ninguna manera de saber en qué punto se iniciará el nuevo subproceso a ejecutarse, durante la llamada a Start.

En ejecución

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

En ejecución

Otro subproceso llama a Suspend

SuspendRequested

El subproceso responde a una solicitud Suspend.

Suspended

Otro subproceso llama a Resume

En ejecución

Otro subproceso llama a Abort

AbortRequested

El subproceso responde a una solicitud Abort.

Stopped

Se termina 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.

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar:
© 2016 Microsoft