Compartilhar via


Estados do thread gerenciado

A propriedade Thread.ThreadState Fornece uma máscara de bit que indica o estado corrente thread's. Um thread está sempre em pelo menos um dos possíveis estados no ThreadState enumeração e podem estar em vários estados ao mesmo time.

Observação importante:

thread estado é somente de interesse em alguns cenários de depuração.Seu código nunca deve usar thread estado para sincronizar as atividades de thread s.

Quando você cria um gerenciado thread no Unstarted estado. O thread permanece no Unstarted estado até que ele é movido para o estado iniciado pelo sistema operacional. De chamadaStart permite que o sistema operacional sabe que o thread pode ser iniciado, ele não altera o estado do segmento.

Threads não gerenciados que inserir o ambiente gerenciado já estão em estado iniciado.Uma vez no estado iniciado, há uma série de ações que podem fazer com que o thread para alterar os estados.A tabela a seguir lista as ações que causam uma alterar de estado, juntamente com o novo estado correspondente.

Ação

Novo estado resultante

Outro thread chama Thread.Start.

Inalterado

O thread responde a Thread.Start e começa a executar.

Running

O thread chama Thread.Sleep.

WaitSleepJoin

O thread chama Monitor.Wait em outro objeto.

WaitSleepJoin

O thread chama Thread.Join em outro thread.

WaitSleepJoin

Outro thread chama Thread.Suspend.

SuspendRequested

O thread responde a um Thread.Suspend solicitação.

Suspended

Outro thread chama Thread.Resume.

Running

Outro thread chama Thread.Suspend.

Running

Outro thread chama Thread.Abort.

AbortRequested

O thread responde a um Thread.Abort.

Aborted

Because the Runningstate has a value of 0, it is not possible to perform a bit test to discover this state.Em vez disso, é possível usar o seguinte teste (em pseudocódigo):

if ((state & (Unstarted | Stopped)) == 0)   // implies Running   

Segmentos são freqüentemente em mais de um estado em qualquer momento.Por exemplo, se um thread estiver bloqueado em um Monitor.Wait telefonar e outro thread chamadas Abort Nesse mesmo thread, o thread será em ambos os WaitSleepJoin e o AbortRequested estado ao mesmo time. Nesse caso, assim sistema autônomo o thread retorna de telefonar para Wait ou é interrompida, ele receberá o ThreadAbortException.

Depois que um thread deixa o Unstarted estado sistema autônomo resultado de uma telefonar para Start, ele nunca pode retornar para o Unstarted estado. Um thread nunca pode deixar o Stopped estado.

Consulte também

Referência

ThreadAbortException

Thread

ThreadState

Outros recursos

Threads gerenciadas