Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Enumeración ThreadState

 

Publicado: octubre de 2016

Especifica los Estados de ejecución de un Thread.

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

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

[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum 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

El Thread.Abort se ha invocado el método en el subproceso, pero el subproceso aún no ha recibido la pendiente System.Threading.ThreadAbortException que intentará finalizarlo.

Background

El subproceso se ejecuta como un subproceso en segundo plano, en lugar de un subproceso en primer plano. Este estado se controla estableciendo la Thread.IsBackground propiedad.

Running

El subproceso se ha iniciado, no está bloqueado y hay no pendientes ThreadAbortException.

Stopped

El subproceso se ha detenido.

StopRequested

Se solicita a detener el subproceso. Esto es sólo para uso interno.

Suspended

Se ha suspendido el subproceso.

SuspendRequested

Se solicita para suspender el subproceso.

Unstarted

El Thread.Start no se ha invocado el método en el subproceso.

WaitSleepJoin

El subproceso está bloqueado. Esto puede ser el resultado de llamar al método Thread.Sleep o Thread.Join, de solicitar un bloqueo, por ejemplo, mediante una llamada a Monitor.Enter o Monitor.Wait o de espera de un objeto de sincronización de subprocesos como ManualResetEvent.

El ThreadState (enumeración) es de interés sólo en algunos escenarios de depuración. El código nunca debe utilizar el estado del subproceso para sincronizar las actividades de subprocesos.

ThreadState define un conjunto de todos los Estados de ejecución posibles para los subprocesos. Una vez que se crea un subproceso, está en al menos uno de los Estados hasta que termina. Los subprocesos creados en common language runtime se encuentran inicialmente en el Unstarted de estado, mientras que los subprocesos externos que entran en el tiempo de ejecución ya están en el Running estado. Un Unstarted subproceso se pasa a la Running estado llamando a Start. No todas las combinaciones de ThreadState valores son válidos; por ejemplo, un subproceso no puede ser tanto en el Aborted y Unstarted Estados.

System_CAPS_importantImportante

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

La siguiente tabla muestra las acciones que provocan un cambio de estado.

Acción

ThreadState

Se crea un subproceso dentro de common language runtime.

Sin comenzar

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

El Start método no devuelve hasta que el nuevo subproceso ha empezado a ejecutarse. No hay ninguna manera de saber en qué punto el nuevo subproceso empezará a ejecutarse durante la llamada a Start.

En ejecución

Las llamadas de subprocesos Sleep

WaitSleepJoin

El subproceso llama Wait en otro objeto.

WaitSleepJoin

El subproceso llama Join en otro subproceso.

WaitSleepJoin

Otro subproceso llama a Interrupt

En ejecución

Otro subproceso llama a Suspend

SuspendRequested

El subproceso responde a una Suspend solicitud.

Suspendido

Otro subproceso llama a Resume

En ejecución

Otro subproceso llama a Abort

AbortRequested

El subproceso responde a una Abort solicitud.

Detenido

Finaliza un subproceso.

Detenido

Además de los Estados que se mencionó anteriormente, también hay la Background estado, que indica si el subproceso se ejecuta en el primer plano o de fondo.

Un subproceso puede estar en más de un estado en un momento dado. Por ejemplo, si un subproceso está bloqueado en una llamada a Wait, y otro subproceso llama a Abort en el subproceso bloqueado, el subproceso bloqueado se encontrará tanto en el WaitSleepJoin y el AbortRequested Estados al mismo tiempo. En este caso, tan pronto como el subproceso vuelve de la llamada a Wait o se interrumpa, recibirá la ThreadAbortException para comenzar a anular.

El Thread.ThreadState propiedad de un subproceso proporciona el estado actual de un subproceso. Las aplicaciones deben usar una máscara de bits para determinar si se está ejecutando un subproceso. Como el valor de Running es cero (0), compruebe si se está ejecutando un subproceso con código C# como (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0 o código de Visual Basic como (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: