ThreadState Enumeráció

Definíció

Megadja a végrehajtási állapotokat egy Thread.

Ez a felsorolás támogatja a tagértékek bitenkénti kombinációját.

public enum class ThreadState
[System.Flags]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ThreadState
[System.Flags]
[System.Serializable]
public enum ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
[<System.Flags>]
type ThreadState = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadState = 
[<System.Flags>]
[<System.Serializable>]
type ThreadState = 
[<System.Flags>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ThreadState = 
Public Enum ThreadState
Öröklődés
ThreadState
Attribútumok

Mezők

Name Érték Description
Running 0

A szál elindult, és még nem állt le.

StopRequested 1

A szál leállítását kéri a rendszer. Ez csak belső használatra készült.

SuspendRequested 2

A szál felfüggesztését kéri a rendszer.

Background 4

A szál háttérszálként van végrehajtva, szemben az előtérszállal. Ezt az állapotot a IsBackground tulajdonság beállításával lehet szabályozni.

Unstarted 8

A Start() metódus nem lett meghívva a szálon.

Stopped 16

A szál leállt.

WaitSleepJoin 32

A szál le van tiltva. Ez lehet a hívás Sleep(Int32) vagy Join()a zárolás kérése – például hívás Enter(Object) vagy Wait(Object, Int32, Boolean) – vagy egy szálszinkronizálási objektumra való várakozás eredménye, például ManualResetEvent.

Suspended 64

A szál fel lett függesztve.

AbortRequested 128

A Abort(Object) metódust meghívták a szálon, de a szál még nem kapta meg a függőben lévőt ThreadAbortException , amely megkísérli megszüntetni.

Aborted 256

A szál állapota beleértendő AbortRequested , és a szál már nem működik, de állapota még nem változott Stopped.

Megjegyzések

Az ThreadState enumerálás a szálak összes lehetséges végrehajtási állapotának halmazát határozza meg. Ez csak néhány hibakeresési forgatókönyv esetében érdekes. A kód soha nem használhatja a szál állapotát a szálak tevékenységeinek szinkronizálásához.

Miután létrejött egy szál, legalább az egyik állapotban lesz, amíg le nem fejeződik. A közös nyelvi futtatókörnyezetben létrehozott szálak kezdetben állapotban Unstarted vannak, míg a futtatókörnyezetbe kerülő külső vagy nem felügyelt szálak már állapotban Running vannak. A rendszer meghív Unstartedegy szálat az Running állapotból az Thread.Start állapotba. Ha egy szál egy hívás Unstartederedményeként elhagyja Start az állapotot, soha nem térhet vissza az Unstarted állapotba.

Egy szál egyszerre több állapotban is lehet. Ha például egy szál le van tiltva egy hívásonMonitor.Wait, és egy másik szál a blokkolt szálon hívja Thread.Abort meg, a blokkolt szál egyszerre és WaitSleepJoin állapotban AbortRequested lesz. Ebben az esetben, amint a szál visszatér a hívásból Monitor.Wait , vagy megszakad, megkapja a ThreadAbortException megszakítás megkezdéséhez szükséges műveletet. Nem minden értékkombináció ThreadState érvényes, például egy szál nem lehet mind az állapotban, mind az AbortedUnstarted állapotban.

A szálak soha nem hagyhatják el az állapotot Stopped .

Important

Két szálállapot-felsorolás létezik: System.Threading.ThreadState és System.Diagnostics.ThreadState.

Az alábbi táblázat az állapotváltozást okozó műveleteket mutatja be.

Action ThreadState
A rendszer létrehoz egy szálat a közös nyelvi futtatókörnyezetben. Unstarted
Egy másik szál meghívja a Thread.Start metódust az új szálon, és a hívás visszatér.

A Start metódus addig nem tér vissza, amíg az új szál nem fut. Nem lehet tudni, hogy az új szál mikor indul el, a hívás Startsorán.
Running
A szálhívások Sleep WaitSleepJoin
A szál egy másik objektumot hív Monitor.Wait meg. WaitSleepJoin
A szál egy másik szálat hív Join meg. WaitSleepJoin
Újabb szálhívások Interrupt Running
Újabb szálhívások Suspend SuspendRequested
A szál válaszol egy Suspend kérésre. Suspended
Újabb szálhívások Resume Running
Újabb szálhívások Abort AbortRequested
A szál válaszol egy Abort kérésre. Stopped
Egy szál leáll. Stopped

A fent említett állapotok mellett az állapot is Background jelzi, hogy a szál a háttérben vagy az előtérben fut-e. További információ: Előtér- és háttérszálak.

A Thread.ThreadState szál tulajdonsága a szál aktuális állapotát biztosítja. Az alkalmazásoknak bitmaszkot kell használniuk annak megállapításához, hogy fut-e egy szál. Mivel a függvény értéke Running nulla (0), ellenőrizze, hogy egy szál fut-e az alábbi kóddal:

(myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
(myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0

A következőre érvényes:

Lásd még