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 값의 조합이 유효하지 않을 수도 있습니다. 예를 들어, 스레드는 Aborted와 Unstarted 상태 양쪽에 있을 수 없습니다.
중요
스레드 상태는 일부 디버깅 시나리오에서만 필요합니다. 코드에서 스레드 작업을 동기화하는 데 스레드 상태를 사용하면 안 됩니다.
다음 표에서는 상태 변경을 발생시키는 동작을 보여 줍니다.
동작 |
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를 호출하면 차단된 스레드는 동시에 WaitSleepJoin 및 AbortRequested 상태에 있게 됩니다. 이 경우 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 클래스