Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

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)
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum ThreadState
Membername Beschreibung
Running Der Thread wurde gestartet, er wird nicht blockiert, und es ist keine ausstehende ThreadAbortException vorhanden.
StopRequested Es besteht eine Anforderung für die Beendigung des Threads. Dies ist ausschließlich für die interne Verwendung vorgesehen.
SuspendRequested Es besteht eine Anforderung für die Unterbrechung des Threads.
Background Der Thread wird nicht als Vordergrundthread, sondern als Hintergrundthread ausgeführt. Dieser Zustand wird durch Festlegen der Thread.IsBackground-Eigenschaft gesteuert.
Unstarted Die Thread.Start-Methode wurde für den Thread nicht aufgerufen.
Stopped Der Thread wurde beendet.
WaitSleepJoin Der Thread ist blockiert. Die Ursache hierfür könnte sein, dass Thread.Sleep oder Thread.Join aufgerufen wurde, dass eine Sperre angefordert wurde, z. B. durch Aufrufen von Monitor.Enter oder Monitor.Wait, oder dass auf ein Threadsynchronisierungsobjekt wie ManualResetEvent gewartet wird.
Suspended Der Thread wurde unterbrochen.
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.
Aborted Der Threadzustand schließt AbortRequested ein, und der Thread ist jetzt deaktiviert. Der Zustand hat sich jedoch noch nicht in Stopped geändert.

Die ThreadState-Enumeration ist nur in einigen Debugszenarien von Interesse. Der Code sollte die Aktivitäten von Threads nie anhand des Threadzustands synchronisieren.

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.

Hinweis Hinweis

Es gibt zwei Threadzustandsenumerationen: System.Threading.ThreadState und System.Diagnostics.ThreadState.

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 anderer Thread ruft die Thread.Start-Methode für den neuen Thread auf, und der Aufruf kehrt zurück.

HinweisHinweis
Die Start-Methode gibt erst einen Wert zurück, wenn mit der Ausführung des neuen Threads begonnen wurde.Es gibt keine Möglichkeit zu wissen, an welchem Punkt der neue Thread während des Aufrufs von Start anfängt.

Running

Ein weiterer 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 weiterer Thread ruft Interrupt auf.

Running

Ein weiterer Thread ruft Suspend auf.

SuspendRequested

Der Thread reagiert auf eine Suspend-Anforderung.

Suspended

Ein weiterer Thread ruft Resume auf.

Running

Ein weiterer Thread ruft Abort auf.

AbortRequested

Der Thread reagiert auf eine Abort-Anforderung.

Beendet

Der Thread wird beendet.

Beendet

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.

.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Datum

Versionsgeschichte

Grund

März 2011

Die Beziehung zwischen der Thread.Start-Methode und dem Running-Zustand wurde genauer erläutert, und es wurde hervorgehoben, dass die ThreadState-Enumeration nicht verwendet werden soll, um die Aktivitäten in Threads zu synchronisieren.

Korrektur inhaltlicher Fehler.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ