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

L' ThreadState enumerazione definisce un set di tutti gli Stati di esecuzione possibili per i thread.The ThreadState enumeration defines a set of all possible execution states for threads. Si tratta di un aspetto interessante 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à dei thread.Your code should never use the thread state to synchronize the activities of threads.

Una volta creato, il thread si trova 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. I thread creati all'interno dell'Common Language Runtime si trovano Unstarted inizialmente nello stato, mentre quelli esterni o non gestiti sono già Running nello 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. Un thread viene sottoposti a transizione Unstarted dallo stato Running allo 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ò trovarsi in più di uno stato in un determinato momento.A thread can be in more than one state at a given time. Se, ad esempio, un thread è bloccato in una chiamata Monitor.Waita e un altro thread Thread.Abort chiama sul thread bloccato, il thread bloccato WaitSleepJoin sarà contemporaneamente nello stato e AbortRequested .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 interrotto, riceverà per avviare l' ThreadAbortException 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 ThreadState di valori sono valide. ad esempio, un thread non può trovarsi Aborted negli Unstarted Stati e.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

Sono presenti due enumerazioni di stato del System.Threading.ThreadState thread System.Diagnostics.ThreadState: e.There are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

Nella tabella seguente vengono illustrate le azioni che determinano una modifica dello stato.The following table shows the actions that cause a change of state.

OperazioneAction ThreadStateThreadState
Viene creato un thread all'interno del Common Language Runtime.A thread is created within the common language runtime. Unstarted
Un altro thread chiama Thread.Start il metodo sul 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 un risultato fino a quando non viene avviata l'esecuzione del nuovo thread.The Start method does not return until the new thread has started running. Non esiste alcun modo per individuare il punto in cui verrà avviato l'esecuzione del nuovo thread durante la chiamata Starta.There is no way to know at what point the new thread will start running, during the call to Start.
Running
Il thread chiamaSleepThe 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 chiamaInterruptAnother thread calls Interrupt Running
Un altro thread chiamaSuspendAnother thread calls Suspend SuspendRequested
Il thread risponde a una richiesta Suspend.The thread responds to a Suspend request. Suspended
Un altro thread chiamaResumeAnother thread calls Resume Running
Un altro thread chiamaAbortAnother thread calls Abort AbortRequested
Il thread risponde a una Abort richiesta.The thread responds to an Abort request. Stopped
Un thread viene terminato.A thread is terminated. Stopped

Oltre agli stati indicati in precedenza, è presente anche lo 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.

La 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. Per determinare se un thread è in esecuzione, le applicazioni devono utilizzare una maschera di bit.Applications must use a bit mask to determine whether a thread is running. Poiché il valore per Running è zero (0), verificare se un thread è in esecuzione con il 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