ThreadState ThreadState ThreadState ThreadState Enum

Definizione

Vengono specificati gli stati di esecuzione di un Thread.Specifies the execution states of a Thread.

Questa enumerazione ha un attributo FlagsAttribute che consente una combinazione bit per bit dei valori del relativo membro.

public enum class ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
type ThreadState = 
Public Enum ThreadState
Ereditarietà
Attributi

Campi

Aborted Aborted Aborted Aborted 256

Lo stato del thread include AbortRequested e il thread è ora inattivo, ma il relativo stato non è ancora stato modificato in Stopped.The thread state includes AbortRequested and the thread is now dead, but its state has not yet changed to Stopped.

AbortRequested AbortRequested AbortRequested AbortRequested 128

Il metodo Abort(Object) è stato richiamato dal thread ma il thread non ha ancora ricevuto l'oggetto ThreadAbortException sospeso che tenterà di sottoporlo al processo di terminazione.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 Background Background Background 4

Il thread sarà eseguito come un thread in background, invece che come un thread in primo piano.The thread is being executed as a background thread, as opposed to a foreground thread. Questo stato viene controllato dall'impostazione della proprietà IsBackground.This state is controlled by setting the IsBackground property.

Running Running Running Running 0

Il thread è stato avviato e non è ancora stato interrotto.The thread has been started and not yet stopped.

Stopped Stopped Stopped Stopped 16

Il thread è stato interrotto.The thread has stopped.

StopRequested StopRequested StopRequested StopRequested 1

Il thread riceverà richiesta di interruzione.The thread is being requested to stop. Solo per uso interno.This is for internal use only.

Suspended Suspended Suspended Suspended 64

Il thread è stato sospeso.The thread has been suspended.

SuspendRequested SuspendRequested SuspendRequested SuspendRequested 2

Il thread riceverà richiesta di sospensione.The thread is being requested to suspend.

Unstarted Unstarted Unstarted Unstarted 8

Il metodo Start() non è stato richiamato dal thread.The Start() method has not been invoked on the thread.

WaitSleepJoin WaitSleepJoin WaitSleepJoin WaitSleepJoin 32

Il thread è bloccato.The thread is blocked. Potrebbe essere il risultato della chiamata al metodo Sleep(Int32) o Join(), della richiesta di un blocco, ad esempio tramite la chiamata a Enter(Object) o Wait(Object, Int32, Boolean), oppure dell'attesa di un oggetto di sincronizzazione thread, ad esempio 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.

Commenti

Il ThreadState enumerazione definisce un set di tutti i possibili stati di esecuzione thread.The ThreadState enumeration defines a set of all possible execution states for threads. È di interesse solo in alcuni scenari di debug.It's of interest only in a few debugging scenarios. Il codice non deve mai usare lo stato del thread per sincronizzare le attività di thread.Your code should never use the thread state to synchronize the activities of threads.

Dopo aver creato un thread, è in almeno uno degli stati fino a quando non termina.Once a thread is created, it's in at least one of the states until it terminates. Thread creati all'interno di common language runtime sono inizialmente nel Unstarted lo stato, mentre esterno, o non gestiti, i thread che entrano in runtime già presenti nel Running dello stato.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. Passa da un thread di Unstarted dello stato nel Running stato chiamando Thread.Start.A thread is transitioned from the Unstarted state into the Running state by calling Thread.Start. Quando un thread lascia lo stato Unstarted in seguito a una chiamata a Start, non può più tornare allo stato Unstarted .Once a thread leaves the Unstarted state as the result of a call to Start, it can never return to the Unstarted state.

Un thread può essere in più di uno stato in un determinato momento.A thread can be in more than one state at a given time. Ad esempio, se un thread è bloccato in una chiamata a Monitor.Waite un altro thread chiama Thread.Abort sul thread bloccato, sarà il thread bloccato in entrambe le WaitSleepJoin e AbortRequested stati nello stesso momento.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. In questo caso, non appena il thread viene restituito dalla chiamata a Monitor.Wait o viene interrotta, riceverà il ThreadAbortException per iniziare l'interruzione.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. Non tutte le combinazioni di ThreadState i valori sono validi; ad esempio, un thread non può essere in entrambe le Aborted e Unstarted stati.Not all combinations of ThreadState values are valid; for example, a thread cannot be in both the Aborted and Unstarted states.

Un thread non può mai lasciare lo stato Stopped .A thread can never leave the Stopped state.

Importante

Esistono due enumerazioni stato thread: System.Threading.ThreadState e System.Diagnostics.ThreadState.There are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

Nella tabella seguente sono riportate le azioni che causano una modifica dello stato.The following table shows the actions that cause a change of state.

OperazioneAction ThreadStateThreadState
Viene creato un thread all'interno di common language runtime.A thread is created within the common language runtime. Unstarted
Un altro thread chiama il Thread.Start metodo nel nuovo thread e la chiamata restituisce.Another thread calls the Thread.Start method on the new thread, and the call returns.

Il Start metodo non restituisce fino a quando non ha avviato il nuovo thread in esecuzione.The Start method does not return until the new thread has started running. Non è possibile sapere a quale punto verrà avviato il nuovo thread in esecuzione, durante la chiamata a Start.There is no way to know at what point the new thread will start running, during the call to Start.
Running
Le chiamate di thread SleepThe thread calls Sleep WaitSleepJoin
Il thread chiama Monitor.Wait su un altro oggetto.The thread calls Monitor.Wait on another object. WaitSleepJoin
Il thread chiama Join su un altro thread.The thread calls Join on another thread. WaitSleepJoin
Un altro thread chiama InterruptAnother thread calls Interrupt Running
Un altro thread chiama SuspendAnother thread calls Suspend SuspendRequested
Il thread risponde a una richiesta Suspend.The thread responds to a Suspend request. Suspended
Un altro thread chiama ResumeAnother thread calls Resume Running
Un altro thread chiama AbortAnother thread calls Abort AbortRequested
Il thread risponde a un Abort richiesta.The thread responds to an Abort request. Stopped
Un thread viene interrotto.A thread is terminated. Stopped

Oltre a stati indicati in precedenza, è inoltre disponibile il Background stato che indica se il thread è in esecuzione in background o in primo piano.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. Per altre informazioni, vedere Thread in primo piano e in background.For more information, see Foreground and Background Threads.

Il Thread.ThreadState proprietà di un thread fornisce lo stato corrente di un thread.The Thread.ThreadState property of a thread provides the current state of a thread. Le applicazioni devono utilizzare una maschera di bit per determinare se un thread è in esecuzione.Applications must use a bit mask to determine whether a thread is running. Poiché il valore di Running è zero (0), verificare se un thread è in esecuzione nel codice seguente: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

Si applica a

Vedi anche