ThreadState Výčet

Definice

Určuje stavy Threadspuštění.Specifies the execution states of a Thread.

Tento výčet má atribut FlagsAttribute, který umožňuje bitové kombinace hodnot členů.

public enum class ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
type ThreadState = 
Public Enum ThreadState
Dědičnost
ThreadState
Atributy

Pole

Aborted 256

Stav vlákna zahrnuje AbortRequested a vlákno je teď neaktivní, ale jeho stav se ještě nezměnil na Stopped.The thread state includes AbortRequested and the thread is now dead, but its state has not yet changed to Stopped.

AbortRequested 128

Metoda byla vyvolána ve vlákně, ale vlákno ještě nedostalo čekání ThreadAbortException , které se pokusí ukončit. Abort(Object)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

Vlákno je prováděno jako vlákno na pozadí, nikoli jako vlákno na popředí.The thread is being executed as a background thread, as opposed to a foreground thread. Tento stav je ovládán nastavením IsBackground vlastnosti.This state is controlled by setting the IsBackground property.

Running 0

Vlákno bylo spuštěno a ještě nebylo zastaveno.The thread has been started and not yet stopped.

Stopped 16

Vlákno bylo zastaveno.The thread has stopped.

StopRequested 1

Vlákno je požadováno k zastavení.The thread is being requested to stop. Tato operace je určena pouze pro interní použití.This is for internal use only.

Suspended 64

Vlákno bylo pozastaveno.The thread has been suspended.

SuspendRequested 2

Vlákno je požadováno pro pozastavení.The thread is being requested to suspend.

Unstarted 8

Start() Metoda nebyla vyvolána ve vlákně.The Start() method has not been invoked on the thread.

WaitSleepJoin 32

Vlákno je blokované.The thread is blocked. Může to být výsledek volání Sleep(Int32) nebo Join(), o vyžadování zámku – například voláním Enter(Object) nebo Wait(Object, Int32, Boolean) čekáním na objekt synchronizace vlákna, jako je ManualResetEventnapříklad.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.

Poznámky

ThreadState Výčet definuje sadu všech možných stavů spuštění pro vlákna.The ThreadState enumeration defines a set of all possible execution states for threads. Je důležité pouze v několika scénářích ladění.It's of interest only in a few debugging scenarios. Váš kód by nikdy neměl používat stav vlákna k synchronizaci aktivit vláken.Your code should never use the thread state to synchronize the activities of threads.

Po vytvoření vlákna je alespoň v jednom ze stavů, dokud se neukončí.Once a thread is created, it's in at least one of the states until it terminates. Vlákna vytvořená v modulu CLR (Common Language Runtime) Unstarted jsou zpočátku ve stavu, zatímco externí nebo nespravované, vlákna, která přicházejí do modulu runtime Running , jsou již ve stavu.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. Vlákno je převedeno ze Unstarted stavu Running do stavu voláním Thread.Start.A thread is transitioned from the Unstarted state into the Running state by calling Thread.Start. Jakmile vlákno opustí Unstarted stav jako výsledek Startvolání, Unstarted může se nikdy vrátit do stavu.Once a thread leaves the Unstarted state as the result of a call to Start, it can never return to the Unstarted state.

Vlákno může být ve více než jednom stavu v daném okamžiku.A thread can be in more than one state at a given time. Například pokud je Monitor.Waitvlákno blokováno při volání a jiné vlákno volá Thread.Abort blokované vlákno, bude blokované vlákno v obou WaitSleepJoin AbortRequested i stavech.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. V takovém případě, jakmile se vlákno vrátí ze volání Monitor.Wait nebo je přerušeno, ThreadAbortException obdrží, aby se začalo přerušit.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. Ne všechny kombinace ThreadState hodnot jsou platné; například vlákno nemůže být v Aborted obou stavech a Unstarted .Not all combinations of ThreadState values are valid; for example, a thread cannot be in both the Aborted and Unstarted states.

Vlákno nemůže nikdy opustit Stopped stav.A thread can never leave the Stopped state.

Důležité

Existují dva výčty stavu vlákna: System.Threading.ThreadState a. System.Diagnostics.ThreadStateThere are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

V následující tabulce jsou uvedeny akce, které způsobují změnu stavu.The following table shows the actions that cause a change of state.

AkceAction ThreadStateThreadState
V modulu CLR (Common Language Runtime) se vytvoří vlákno.A thread is created within the common language runtime. Unstarted
Jiné vlákno volá Thread.Start metodu na novém vlákně a volání se vrátí.Another thread calls the Thread.Start method on the new thread, and the call returns.

Start Metoda nevrátí, dokud nebude spuštěno nové vlákno.The Start method does not return until the new thread has started running. Neexistuje žádný způsob, jak zjistit, v jakém bodě bude nové vlákno spuštěno během volání Start.There is no way to know at what point the new thread will start running, during the call to Start.
Running
Vlákno voláSleepThe thread calls Sleep WaitSleepJoin
Vlákno volá Monitor.Wait jiný objekt.The thread calls Monitor.Wait on another object. WaitSleepJoin
Vlákno volá Join jiné vlákno.The thread calls Join on another thread. WaitSleepJoin
Další vlákno voláInterruptAnother thread calls Interrupt Running
Další vlákno voláSuspendAnother thread calls Suspend SuspendRequested
Vlákno odpoví na Suspend požadavek.The thread responds to a Suspend request. Suspended
Další vlákno voláResumeAnother thread calls Resume Running
Další vlákno voláAbortAnother thread calls Abort AbortRequested
Vlákno odpoví na Abort požadavek.The thread responds to an Abort request. Stopped
Vlákno bylo ukončeno.A thread is terminated. Stopped

Kromě výše uvedených stavů je také Background stav, který označuje, zda je vlákno spuštěno na pozadí nebo popředí.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. Další informace naleznete v tématu vlákna v popředí a na pozadí.For more information, see Foreground and Background Threads.

Thread.ThreadState Vlastnost vlákna poskytuje aktuální stav vlákna.The Thread.ThreadState property of a thread provides the current state of a thread. Aplikace musí použít bitovou masku k určení, zda je vlákno spuštěno.Applications must use a bit mask to determine whether a thread is running. Vzhledem k tomu, Running že hodnota pro je nula (0), otestujte, zda je vlákno spuštěno následujícím kódem: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

Platí pro

Viz také