ThreadState ThreadState ThreadState ThreadState Enum

Определение

Задает состояния выполнения объекта Thread.Specifies the execution states of a Thread.

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

public enum class ThreadState
[System.Flags]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum ThreadState
type ThreadState = 
Public Enum ThreadState
Наследование
Атрибуты

Поля

Aborted Aborted Aborted Aborted 256

Состояние потока включает в себя значение AbortRequested, и поток теперь не выполняет работу, но его состояние еще не изменилось на Stopped.The thread state includes AbortRequested and the thread is now dead, but its state has not yet changed to Stopped.

AbortRequested AbortRequested AbortRequested AbortRequested 128

Метод Abort(Object) был вызван для потока, но поток еще не получил исключение ThreadAbortException, которое попытается завершить его.The Abort(Object) method has been invoked on the thread, but the thread has not yet received the pending ThreadAbortException that will attempt to terminate it.

Background Background Background Background 4

Поток выполняется как фоновый поток, в противоположность потокам переднего плана.The thread is being executed as a background thread, as opposed to a foreground thread. Это состояние управляется заданием свойства IsBackground.This state is controlled by setting the IsBackground property.

Running Running Running Running 0

Поток был запущен, но не останавливался.The thread has been started and not yet stopped.

Stopped Stopped Stopped Stopped 16

Поток был остановлен.The thread has stopped.

StopRequested StopRequested StopRequested StopRequested 1

Поток получает запрос на остановку.The thread is being requested to stop. Предназначено только для внутреннего использования.This is for internal use only.

Suspended Suspended Suspended Suspended 64

Поток был приостановлен.The thread has been suspended.

SuspendRequested SuspendRequested SuspendRequested SuspendRequested 2

Запрашивается приостановка работы потока.The thread is being requested to suspend.

Unstarted Unstarted Unstarted Unstarted 8

Метод Start() не был вызван для потока.The Start() method has not been invoked on the thread.

WaitSleepJoin WaitSleepJoin WaitSleepJoin WaitSleepJoin 32

Поток заблокирован.The thread is blocked. Это может произойти в результате вызова метода Sleep(Int32) или метода Join(), в результате запроса блокировки, например при вызове метода Enter(Object) или Wait(Object, Int32, Boolean) или в результате ожидания объекта синхронизации потока, такого как ManualResetEvent.This could be the result of calling Sleep(Int32) or Join(), of requesting a lock - for example, by calling Enter(Object) or Wait(Object, Int32, Boolean) - or of waiting on a thread synchronization object such as ManualResetEvent.

Комментарии

ThreadState Перечисления определяет набор всех состояний возможное выполнение потоков.The ThreadState enumeration defines a set of all possible execution states for threads. Он представляет интерес только в некоторых сценариях отладки.It's of interest only in a few debugging scenarios. Код никогда не следует использовать состояние потока для синхронизации действий потоков.Your code should never use the thread state to synchronize the activities of threads.

После создания потока он находится в по крайней мере одно из состояний, до его окончания.Once a thread is created, it's in at least one of the states until it terminates. Потокам, созданным в общеязыковой изначально находятся в Unstarted состояние при внешнем, или неуправляемыми, потоки, приходящие в среду выполнения уже находятся в Running состояние.Threads created within the common language runtime are initially in the Unstarted state, while external, or unmanaged, threads that come into the runtime are already in the Running state. Поток передается от Unstarted состояния в Running состояния путем вызова Thread.Start.A thread is transitioned from the Unstarted state into the Running state by calling Thread.Start. Если поток был выведен из состояния Unstarted в результате вызова метода Start, он не может вернуться в состояние Unstarted ни при каких условиях.Once a thread leaves the Unstarted state as the result of a call to Start, it can never return to the Unstarted state.

Поток может быть более одного состояния в определенный момент времени.A thread can be in more than one state at a given time. Например, если поток заблокируется при вызове Monitor.Waitи другой поток вызывает Thread.Abort для заблокированного потока, заблокированного потока будет находиться в WaitSleepJoin и AbortRequested состояний, в то же время.For example, if a thread is blocked on a call to Monitor.Wait, and another thread calls Thread.Abort on the blocked thread, the blocked thread will be in both the WaitSleepJoin and AbortRequested states at the same time. В данном случае, как только поток возвращается из вызова Monitor.Wait или прерван, он будет получать ThreadAbortException для начала аварийного завершения.In this case, as soon as the thread returns from the call to Monitor.Wait or is interrupted, it will receive the ThreadAbortException to begin aborting. Не все комбинации ThreadState значения являются допустимыми; например, поток не может быть одновременно Aborted и Unstarted состояний.Not all combinations of ThreadState values are valid; for example, a thread cannot be in both the Aborted and Unstarted states.

Поток никогда не может выйти из состояния Stopped .A thread can never leave the Stopped state.

Важно!

Существует две нумерации состояние потока: System.Threading.ThreadState и System.Diagnostics.ThreadState.There are two thread state enumerations: System.Threading.ThreadState and System.Diagnostics.ThreadState.

В следующей таблице показаны действия, которые вызывают изменение состояния.The following table shows the actions that cause a change of state.

ДействиеAction Состояния потокаThreadState
Поток создается среда CLR.A thread is created within the common language runtime. Unstarted
Другой поток вызывает Thread.Start на новый поток, а вызов метода.Another thread calls the Thread.Start method on the new thread, and the call returns.

Start Метод не возвращает, пока новый поток был запущен.The Start method does not return until the new thread has started running. Нет способа узнать, в какой момент новый поток начнет выполнение, во время вызова Start.There is no way to know at what point the new thread will start running, during the call to Start.
Running
Поток вызывает метод SleepThe thread calls Sleep WaitSleepJoin
Поток вызывает Monitor.Wait другого объекта.The thread calls Monitor.Wait on another object. WaitSleepJoin
Поток вызывает Join другого потока.The thread calls Join on another thread. WaitSleepJoin
Другой поток вызывает метод InterruptAnother thread calls Interrupt Running
Другой поток вызывает метод SuspendAnother thread calls Suspend SuspendRequested
Поток отвечает на запрос Suspend.The thread responds to a Suspend request. Suspended
Другой поток вызывает метод ResumeAnother thread calls Resume Running
Другой поток вызывает метод AbortAnother thread calls Abort AbortRequested
Поток отвечает на Abort запроса.The thread responds to an Abort request. Stopped
Поток завершается.A thread is terminated. Stopped

В дополнение к состояний, приведенных выше, есть также Background состояние, которое указывает, является ли поток выполняется в фоновом режиме или передний план.In addition to the states noted above, there is also the Background state, which indicates whether the thread is running in the background or foreground. См. дополнительные сведения об основных и фоновых потоках.For more information, see Foreground and Background Threads.

Thread.ThreadState Свойство потока предоставляет текущее состояние потока.The Thread.ThreadState property of a thread provides the current state of a thread. Приложения должны использовать битовую маску, чтобы определить, выполняется ли поток.Applications must use a bit mask to determine whether a thread is running. Так как значение для Running является ноль (0), проверить ли поток выполняется в следующем примере кода:Since the value for Running is zero (0), test whether a thread is running by the following code:

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

Применяется к

Дополнительно