Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
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.ThreadingAssembly: mscorlib (in mscorlib.dll)
| 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
|
|---|
|
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. |
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.
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. |
Hinweis