ThreadState Enumeráció
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
- 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