ThreadState-Enumeration
Gibt die Ausführungszustände eines Thread an.
Diese Enumeration verfügt über ein FlagsAttribute -Attribut, das die bitweise Kombination der Memberwerte zulässt.
Namespace: System.Threading
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration ThreadState
'Usage
Dim instance As ThreadState
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum ThreadState
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum class ThreadState
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
/** @attribute FlagsAttribute() */
public enum ThreadState
SerializableAttribute
ComVisibleAttribute(true)
FlagsAttribute
public enum ThreadState
Member
Membername | Beschreibung | |
---|---|---|
Aborted | Der Thread befindet sich im Stopped-Zustand. | |
AbortRequested | Die Thread.Abort-Methode wurde für den Thread aufgerufen, doch der Thread hat noch nicht die ausstehende System.Threading.ThreadAbortException empfangen, die ihn zu beenden versucht. | |
Background | Der Thread wird nicht als Vordergrundthread, sondern als Hintergrundthread ausgeführt. Dieser Zustand wird durch Festlegen der Thread.IsBackground-Eigenschaft gesteuert. | |
Running | Der Thread wurde gestartet, er wird nicht blockiert, und es ist keine ausstehende ThreadAbortException vorhanden. | |
Stopped | Der Thread wurde beendet. | |
StopRequested | Es besteht eine Anforderung für die Beendigung des Threads. Dies ist ausschließlich für die interne Verwendung vorgesehen. | |
Suspended | Der Thread wurde unterbrochen. | |
SuspendRequested | Es besteht eine Anforderung für die Unterbrechung des Threads. | |
Unstarted | Die Thread.Start-Methode wurde für den Thread nicht aufgerufen. | |
WaitSleepJoin | Der Thread ist als Ergebnis eines Aufrufs von Wait, Sleep oder Join blockiert. |
Hinweise
ThreadState definiert eine Gruppe aller möglichen Ausführungszustände für Threads. Ein Thread befindet sich nach seiner Erstellung bis zu seiner Beendigung in mindestens einem der Zustände. Innerhalb der Common Language Runtime erstellte Threads befinden sich anfangs im Unstarted-Zustand, während in die Runtime eintretende externe Threads sich bereits im Running-Zustand befinden. Ein Unstarted-Thread geht durch den Aufruf von Start in den Running-Zustand über. Es sind nicht alle Kombinationen von ThreadState-Werten gültig. Ein Thread kann sich z. B nicht gleichzeitig im Aborted-Zustand und im Unstarted-Zustand befinden.
Wichtig
Der Threadzustand ist nur in bestimmten Debugszenarien von Interesse. Code sollte den Threadzustand unter keinen Umständen zum Synchronisieren der Threadaktivität verwenden.
In der folgenden Tabelle sind die Aktionen aufgeführt, die eine Zustandsänderung bewirken.
Aktion |
ThreadState |
---|---|
Ein Thread wird innerhalb der Common Language Runtime erstellt. |
Unstarted |
Ein Thread ruft Start auf. |
Unstarted |
Die Ausführung des Threads beginnt. |
Running |
Der Thread ruft Sleep auf. |
WaitSleepJoin |
Der Thread ruft Wait für ein anderes Objekt auf. |
WaitSleepJoin |
Der Thread ruft Join für einen anderen Thread auf. |
WaitSleepJoin |
Ein anderer Thread ruft Interrupt auf. |
Running |
Ein anderer Thread ruft Suspend auf. |
SuspendRequested |
Der Thread reagiert auf eine Suspend-Anforderung. |
Suspended |
Ein anderer Thread ruft Resume auf. |
Running |
Ein anderer Thread ruft Abort auf. |
AbortRequested |
Der Thread reagiert auf eine Abort-Anforderung. |
Stopped |
Ein Thread wird beendet. |
Stopped |
Zusätzlich zu den oben aufgeführten Zuständen gibt es den Background-Zustand, der angibt, ob der Thread im Hintergrund oder im Vordergrund ausgeführt wird.
Ein Thread kann sich gleichzeitig in mehreren Zuständen befinden. Wenn ein Thread z. B. bei einem Aufruf von Wait blockiert ist und ein anderer Thread Abort für den blockierten Thread aufruft, befindet sich der blockierte Thread gleichzeitig im WaitSleepJoin-Zustand und im AbortRequested-Zustand. In diesem Fall empfängt der Thread die ThreadAbortException zum Beginnen des Abbruchs, sobald er den Aufruf von Wait beendet hat oder unterbrochen wird.
Die Thread.ThreadState-Eigenschaft eines Threads stellt den aktuellen Zustand eines Threads bereit. Anwendungen müssen eine Bitmaske verwenden, um zu ermitteln, ob ein Thread ausgeführt wird. Da der Wert für Running 0 ist, überprüfen Sie, ob ein Thread ausgeführt wird, indem Sie C#-Code, z. B. (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
, oder Visual Basic-Code, z. B. (myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0
, verwenden.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
System.Threading-Namespace
Thread-Klasse
Weitere Ressourcen
Zustände von verwalteten Threads
Verwaltetes und nicht verwaltetes Threading