ThreadState Enum

Definitie

Hiermee geeft u de uitvoeringsstatussen van een Thread.

Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.

public enum class ThreadState
[System.Flags]
[System.Serializable]
public enum ThreadState
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum ThreadState
[System.Flags]
public enum ThreadState
[<System.Flags>]
[<System.Serializable>]
type ThreadState = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ThreadState = 
[<System.Flags>]
type ThreadState = 
Public Enum ThreadState
Overname
ThreadState
Kenmerken

Velden

Name Waarde Description
Running 0

De thread is gestart en nog niet gestopt.

StopRequested 1

De thread wordt gevraagd om te stoppen. Dit is alleen voor intern gebruik.

SuspendRequested 2

De thread wordt gevraagd om te onderbreken.

Background 4

De thread wordt uitgevoerd als een achtergrondthread, in plaats van een voorgrondthread. Deze status wordt bepaald door de eigenschap in te IsBackground stellen.

Unstarted 8

De Start() methode is niet aangeroepen op de thread.

Stopped 16

De thread is gestopt.

WaitSleepJoin 32

De thread is geblokkeerd. Dit kan het gevolg zijn van het aanroepen Sleep(Int32) of Join()aanvragen van een vergrendeling, bijvoorbeeld door aan te roepen Enter(Object) of Wait(Object, Int32, Boolean) te wachten op een threadsynchronisatieobject, zoals ManualResetEvent.

Suspended 64

De thread is onderbroken.

AbortRequested 128

De Abort(Object) methode is aangeroepen op de thread, maar de thread heeft nog niet de in behandeling zijnde ThreadAbortException ontvangen die deze probeert te beëindigen.

Aborted 256

De threadstatus bevat AbortRequested en de thread is nu dood, maar de status is nog niet gewijzigd in Stopped.

Opmerkingen

De ThreadState opsomming definieert een set van alle mogelijke uitvoeringsstatussen voor threads. Het is van belang in slechts enkele foutopsporingsscenario's. Uw code mag nooit de threadstatus gebruiken om de activiteiten van threads te synchroniseren.

Zodra een thread is gemaakt, bevindt deze zich in ten minste een van de statussen totdat deze wordt beëindigd. Threads die zijn gemaakt in de algemene taalruntime, hebben in eerste instantie de Unstarted status, terwijl externe of onbeheerde threads die in de runtime binnenkomen, zich al in de Running status bevinden. Een thread wordt overgezet van de Unstarted status naar de Running status door aan te roepen Thread.Start. Zodra een thread de Unstarted status verlaat als gevolg van een aanroep naar Start, kan deze nooit terugkeren naar de Unstarted status.

Een thread kan meerdere statussen tegelijk hebben. Als een thread bijvoorbeeld wordt geblokkeerd voor een aanroep naar Monitor.Waiten een andere thread-aanroepen Thread.Abort op de geblokkeerde thread, heeft de geblokkeerde thread zowel de WaitSleepJoin status AbortRequested als de status tegelijkertijd. In dit geval ontvangt de thread, zodra de thread wordt geretourneerd van de aanroep naar Monitor.Wait of wordt onderbroken, het ThreadAbortException om af te breken. Niet alle combinaties van ThreadState waarden zijn geldig. Een thread kan bijvoorbeeld niet zowel de status als de AbortedUnstarted status hebben.

Een thread kan de Stopped status nooit verlaten.

Important

Er zijn twee threadstatus-inventarisaties: System.Threading.ThreadState en System.Diagnostics.ThreadState.

In de volgende tabel ziet u de acties die een wijziging van de status veroorzaken.

Actie ThreadState
Er wordt een thread gemaakt in de algemene taalruntime. Unstarted
Een andere thread roept de Thread.Start methode op de nieuwe thread aan en de aanroep wordt geretourneerd.

De Start methode wordt pas geretourneerd als de nieuwe thread is gestart. Er is geen manier om te weten op welk moment de nieuwe thread wordt uitgevoerd, tijdens de aanroep naar Start.
Running
De thread-aanroepen Sleep WaitSleepJoin
De thread roept Monitor.Wait een ander object aan. WaitSleepJoin
De thread roept Join een andere thread aan. WaitSleepJoin
Een andere thread-aanroepen Interrupt Running
Een andere thread-aanroepen Suspend SuspendRequested
De thread reageert op een Suspend aanvraag. Suspended
Een andere thread-aanroepen Resume Running
Een andere thread-aanroepen Abort AbortRequested
De thread reageert op een Abort aanvraag. Stopped
Er wordt een thread beëindigd. Stopped

Naast de bovenstaande statussen is er ook de Background status, die aangeeft of de thread op de achtergrond of op de voorgrond wordt uitgevoerd. Zie Voorgrond- en achtergrondthreads voor meer informatie.

De Thread.ThreadState eigenschap van een thread biedt de huidige status van een thread. Toepassingen moeten een bitmasker gebruiken om te bepalen of een thread wordt uitgevoerd. Aangezien de waarde voor Running nul (0) is, test u of een thread wordt uitgevoerd met de volgende code:

(myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0
(myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0

Van toepassing op

Zie ook