ThreadState Enumeração

Definição

Especifica os estados de execução de um Thread.Specifies the execution states of a Thread.

Esta enumeração tem um atributo FlagsAttribute que permite uma combinação bit a bit dos seus valores membros.

public enum class ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
type ThreadState = 
Public Enum ThreadState
Herança
ThreadState
Atributos

Campos

Aborted 256

O estado do thread inclui AbortRequested e agora o thread está inativo, mas seu estado ainda não foi alterado para Stopped.The thread state includes AbortRequested and the thread is now dead, but its state has not yet changed to Stopped.

AbortRequested 128

O método Abort(Object) foi invocado no thread, mas o thread ainda não recebeu o ThreadAbortException pendente que tentará encerrá-lo.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 4

O thread está sendo executado como um thread em segundo plano, em vez de um thread de primeiro plano.The thread is being executed as a background thread, as opposed to a foreground thread. Esse estado é controlado pela configuração da propriedade IsBackground.This state is controlled by setting the IsBackground property.

Running 0

O thread foi iniciado e ainda não foi interrompido.The thread has been started and not yet stopped.

Stopped 16

O thread foi interrompido.The thread has stopped.

StopRequested 1

O thread está sendo solicitado a parar.The thread is being requested to stop. Isso é somente para uso interno.This is for internal use only.

Suspended 64

O thread foi suspenso.The thread has been suspended.

SuspendRequested 2

O thread está sendo solicitado a suspender.The thread is being requested to suspend.

Unstarted 8

O método Start() não foi invocado no thread.The Start() method has not been invoked on the thread.

WaitSleepJoin 32

O thread está bloqueado.The thread is blocked. Isso pode ser o resultado de chamar Sleep(Int32) ou Join(), solicitar um bloqueio (por exemplo, chamando Enter(Object) ou Wait(Object, Int32, Boolean)) ou esperar em um objeto de sincronização de thread 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.

Comentários

A ThreadState enumeração define um conjunto de todos os Estados de execução possíveis para threads.The ThreadState enumeration defines a set of all possible execution states for threads. É de interesse apenas em alguns cenários de depuração.It's of interest only in a few debugging scenarios. Seu código nunca deve usar o estado do thread para sincronizar as atividades de threads.Your code should never use the thread state to synchronize the activities of threads.

Depois que um thread é criado, ele está em pelo menos um dos Estados até que seja encerrado.Once a thread is created, it's in at least one of the states until it terminates. Os threads criados dentro do Common Language Runtime estão inicialmente Unstarted no estado, embora sejam externos ou não gerenciados, os threads que entram no tempo de execução Running já estão no 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. Um thread é transferido do Unstarted estado para o Running estado chamando Thread.Start.A thread is transitioned from the Unstarted state into the Running state by calling Thread.Start. Depois que um thread sair do estado Unstarted devido a uma chamada para Start, ele nunca poderá retornar para o 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.

Um thread pode estar em mais de um estado em um determinado momento.A thread can be in more than one state at a given time. Por exemplo, se um thread for bloqueado em uma chamada para Monitor.Waite em outras chamadas Thread.Abort de thread no thread bloqueado, o thread bloqueado estará em ambos os WaitSleepJoin Estados e AbortRequested ao mesmo tempo.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. Nesse caso, assim que o thread retorna da chamada para Monitor.Wait ou é interrompido, ele receberá o para começar a ThreadAbortException abortar.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. Nem todas as combinações ThreadState de valores são válidas; por exemplo, um thread não pode estar Aborted nos Unstarted Estados e.Not all combinations of ThreadState values are valid; for example, a thread cannot be in both the Aborted and Unstarted states.

Um thread nunca pode deixar o estado Stopped.A thread can never leave the Stopped state.

Importante

Há duas enumerações de estado de thread System.Threading.ThreadState : System.Diagnostics.ThreadStatee.There are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

A tabela a seguir mostra as ações que causam uma alteração de estado.The following table shows the actions that cause a change of state.

AçãoAction ThreadStateThreadState
Um thread é criado dentro do Common Language Runtime.A thread is created within the common language runtime. Unstarted
Outro thread chama o Thread.Start método no novo thread e a chamada retorna.Another thread calls the Thread.Start method on the new thread, and the call returns.

O Start método não retorna até que o novo thread tenha iniciado a execução.The Start method does not return until the new thread has started running. Não é possível saber em que ponto o novo thread começará a ser executado durante a chamada para Start.There is no way to know at what point the new thread will start running, during the call to Start.
Running
As chamadas de threadSleepThe thread calls Sleep WaitSleepJoin
O thread chama Monitor.Wait em outro objeto.The thread calls Monitor.Wait on another object. WaitSleepJoin
O thread chama Join em outro thread.The thread calls Join on another thread. WaitSleepJoin
Outras chamadas de threadInterruptAnother thread calls Interrupt Running
Outras chamadas de threadSuspendAnother thread calls Suspend SuspendRequested
O thread responde uma solicitação de Suspend.The thread responds to a Suspend request. Suspended
Outras chamadas de threadResumeAnother thread calls Resume Running
Outras chamadas de threadAbortAnother thread calls Abort AbortRequested
O thread responde a uma Abort solicitação.The thread responds to an Abort request. Stopped
Um thread é encerrado.A thread is terminated. Stopped

Além dos Estados indicados acima, também há o Background estado, que indica se o thread está sendo executado em segundo plano ou em primeiro 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 obter mais informações, confira Threads em primeiro plano e em segundo plano.For more information, see Foreground and Background Threads.

A Thread.ThreadState propriedade de um thread fornece o estado atual de um thread.The Thread.ThreadState property of a thread provides the current state of a thread. Os aplicativos devem usar uma máscara de bits para determinar se um thread está em execução.Applications must use a bit mask to determine whether a thread is running. Como o valor de Running é zero (0), teste se um thread está sendo executado pelo código a seguir: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

Aplica-se a

Veja também