Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ThreadState (Enumeración)

Especifica los estados de ejecución de Thread.

Esta 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 class 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. 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.

Nota importanteImportante

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

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft