다음을 통해 공유


ThreadState 열거형

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

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

네임스페이스: System.Threading
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration ThreadState
‘사용 방법
Dim instance As ThreadState
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[FlagsAttribute] 
public enum ThreadState
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[FlagsAttribute] 
public enum class ThreadState
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute FlagsAttribute() */ 
public enum ThreadState
SerializableAttribute 
ComVisibleAttribute(true) 
FlagsAttribute 
public enum ThreadState

멤버

  멤버 이름 설명
Aborted 스레드가 Stopped 상태에 있습니다. 
AbortRequested 스레드에 Thread.Abort 메서드가 호출되었지만 해당 스레드는 자신을 종결시키려는 보류된 System.Threading.ThreadAbortException을 받지 못했습니다. 
Background 해당 스레드는 전경 스레드와 반대인 배경 스레드로 실행됩니다. 이 상태는 Thread.IsBackground 속성을 설정하여 제어합니다. 
Running 해당 스레드가 차단되지 않고 시작되었고 보류된 ThreadAbortException이 없습니다. 
Stopped 스레드가 중지되었습니다. 
StopRequested 스레드를 중지하도록 요청했습니다. 이는 내부 전용입니다. 
Suspended 스레드가 일시 중단되었습니다. 
SuspendRequested 스레드를 일시 중단하도록 요청하고 있습니다. 
Unstarted 스레드에 Thread.Start 메서드가 호출되지 않았습니다. 
WaitSleepJoin Wait , Sleep 또는 Join을 호출한 결과 스레드가 차단되었습니다. 

설명

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

중요

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

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

동작

ThreadState

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

Unstarted

스레드에서 Start를 호출합니다.

Unstarted

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

Running

스레드에서 Sleep을 호출합니다.

WaitSleepJoin

스레드에서 다른 개체에 있는 Wait를 호출합니다.

WaitSleepJoin

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

WaitSleepJoin

다른 스레드에서 Interrupt를 호출합니다.

Running

다른 스레드에서 Suspend를 호출합니다.

SuspendRequested

스레드가 Suspend 요청에 응답합니다.

Suspended

다른 스레드에서 Resume를 호출합니다.

Running

다른 스레드에서 Abort를 호출합니다.

AbortRequested

스레드가 Abort 요청에 응답합니다.

Stopped

스레드가 종결됩니다.

Stopped

위에서 설명한 상태 외에, 스레드가 배경에서 실행 중인지 아니면 전경에서 실행 중인지 여부를 나타내는 Background 상태도 있습니다.

스레드는 주어진 시간에 하나 이상의 상태에 있을 수 있습니다. 예를 들어, Wait 호출에 대해 스레드가 차단되어 있고 다른 스레드에서 차단된 스레드에 있는 Abort를 호출하면 차단된 스레드는 동시에 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 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

System.Threading 네임스페이스
Thread 클래스

기타 리소스

관리되는 스레드 상태
관리되는 스레딩과 관리되지 않는 스레딩