Freigeben über


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