정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

ThreadState 열거형

2013-12-13

Thread의 실행 상태를 지정합니다.

이 열거형에는 멤버 값을 비트로 조합할 수 있는 FlagsAttribute 특성이 있습니다.

Namespace:  System.Threading
어셈블리:  mscorlib(mscorlib.dll)

[FlagsAttribute]
public enum ThreadState

멤버 이름설명
Aborted스레드 상태에 AbortRequested가 포함되어 있고 스레드가 작동하지 않지만 상태가 아직 Stopped로 변경되지 않았습니다.
AbortRequested스레드에 Thread.Abort 메서드가 호출되었지만 해당 스레드는 자신을 종결시키려는 보류된 System.Threading.ThreadAbortException을 받지 못했습니다.
Background해당 스레드는 전경 스레드와 반대인 배경 스레드로 실행됩니다. 이 상태는 Thread.IsBackground 속성을 설정하여 제어합니다.
Running해당 스레드가 차단되지 않고 시작되었고 보류된 ThreadAbortException이 없습니다.
Stopped스레드가 중지되었습니다.
StopRequested스레드를 중지하도록 요청했습니다. 이는 내부 전용입니다.
Suspended스레드가 일시 중단되었습니다.
SuspendRequested스레드에 일시 중단이 표시되었습니다.
Unstarted스레드에 Thread.Start 메서드가 호출되지 않았습니다.
WaitSleepJoin스레드가 차단되었습니다. 이는 Thread.Sleep 또는 Thread.Join을 호출하거나, Monitor.Enter 또는 Monitor.Wait를 호출하는 등의 방법으로 잠금을 요청하거나, ManualResetEvent와 같은 스레드 동기화 개체를 기다리고 있는 경우 발생할 수 있습니다.

ThreadState는 가능한 모든 스레드 실행 상태의 집합을 정의합니다. 만든 스레드는 종결될 때까지 최소한 하나의 상태에 있게 됩니다. 공용 언어 런타임 내에서 만든 스레드는 초기에 Unstarted 상태인 반면 런타임에 들어온 외부 스레드는 이미 Running 상태입니다. Start 메서드를 호출하면 Unstarted 스레드가 Running 상태로 전환됩니다. ThreadState 값의 조합이 유효하지 않을 수도 있습니다. 예를 들어 스레드가 동시에 AbortedUnstarted 상태일 수는 없습니다.

중요중요:

일부 디버깅 시나리오에서만 스레드 상태가 중요합니다. 스레드 작업을 동기화하려고 코드에서 스레드 상태를 사용해서는 안 됩니다.

다음 표에서는 상태 변경을 발생시키는 동작을 보여 줍니다.

동작

ThreadState

공용 언어 런타임 내에서 스레드를 만듭니다.

Unstarted

스레드의 Start 메서드가 다른 스레드에서 호출됩니다.

Unstarted

스레드가 실행을 시작합니다.

Running

스레드가 Sleep을 호출합니다.

WaitSleepJoin

스레드에서 Wait를 호출하거나 다른 블로킹 호출을 수행합니다.

WaitSleepJoin

스레드에서 다른 스레드에 있는 Join을 호출합니다.

WaitSleepJoin

공용 언어 런타임은 가비지 수집 등을 위해 스레드에 일시 중단 표시를 합니다.

SuspendRequested

스레드가 일시 중단되었습니다.

Suspended

스레드가 일시 중단 후 작업을 다시 시작합니다.

Running

다른 스레드가 스레드에 대해 Thread.Abort를 호출합니다.

AbortRequested

스레드가 종결되었습니다.

Stopped

스레드의 Thread.IsBackground 속성이 스레드 자체 또는 다른 스레드에 의해 true로 설정됩니다.

Background

스레드는 주어진 시간에 하나 이상의 상태에 있을 수 있습니다. 예를 들면 다음과 같습니다.

  • Background 상태는 모든 상태와 결합할 수 있습니다.

  • 스레드가 Monitor.Wait 호출에서 차단되었으며 시스템에서 스레드를 중단하면 차단된 스레드는 동시에 WaitSleepJoinAbortRequested 상태에 있게 됩니다. 이 경우 Wait에 대한 호출에서 스레드가 반환하거나 중단되면 ThreadAbortException이 발생하여 실행 중단이 시작됩니다.

스레드의 Thread.ThreadState 속성은 스레드의 현재 상태를 제공합니다. 스레드가 실행 중인지 확인하려면 응용프로그램에서 비트 마스크를 사용해야 합니다. Running의 값이 0이므로 (myThread.ThreadState & (ThreadState.Stopped | ThreadState.Unstarted)) == 0과 같은 C# 코드나 (myThread.ThreadState And (ThreadState.Stopped Or ThreadState.Unstarted)) = 0과 같은 Visual Basic 코드를 사용하여 스레드가 실행 중인지 여부를 테스트합니다.

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: