다음을 통해 공유


Thread 클래스

정의

스레드를 만들고 제어하며, 해당 속성을 설정하고, 상태를 가져옵니다.

public ref class Thread sealed : System::Runtime::ConstrainedExecution::CriticalFinalizerObject
public ref class Thread sealed
public ref class Thread sealed : System::Runtime::InteropServices::_Thread
public ref class Thread sealed : System::Runtime::ConstrainedExecution::CriticalFinalizerObject, System::Runtime::InteropServices::_Thread
public sealed class Thread : System.Runtime.ConstrainedExecution.CriticalFinalizerObject
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Thread
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Thread : System.Runtime.InteropServices._Thread
[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Thread : System.Runtime.ConstrainedExecution.CriticalFinalizerObject, System.Runtime.InteropServices._Thread
type Thread = class
    inherit CriticalFinalizerObject
[<System.Runtime.InteropServices.ComVisible(true)>]
type Thread = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type Thread = class
    interface _Thread
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type Thread = class
    inherit CriticalFinalizerObject
    interface _Thread
Public NotInheritable Class Thread
Inherits CriticalFinalizerObject
Public NotInheritable Class Thread
Public NotInheritable Class Thread
Implements _Thread
Public NotInheritable Class Thread
Inherits CriticalFinalizerObject
Implements _Thread
상속
상속
Thread
특성
구현

설명

이 API에 대한 자세한 내용은 스레드에 대한 추가 API 설명을 참조하세요.

생성자

Thread(ParameterizedThreadStart)

스레드가 시작될 때 개체가 스레드로 전달될 수 있도록 하는 대리자를 지정하여 Thread 클래스의 새 인스턴스를 초기화합니다.

Thread(ParameterizedThreadStart, Int32)

스레드가 시작될 때 스레드로 개체가 전달될 수 있도록 하는 대리자를 지정하고 스레드의 최대 스택 크기를 지정하여 Thread 클래스의 새 인스턴스를 초기화합니다.

Thread(ThreadStart)

Thread 클래스의 새 인스턴스를 초기화합니다.

Thread(ThreadStart, Int32)

스레드의 최대 스택 크기를 지정하여 Thread 클래스의 새 인스턴스를 초기화합니다.

속성

ApartmentState
사용되지 않음.
사용되지 않음.

이 스레드의 아파트 상태를 가져오거나 설정합니다.

CurrentContext

스레드가 실행 중인 현재 컨텍스트를 가져옵니다.

CurrentCulture

현재 스레드에 대한 문화권을 가져오거나 설정합니다.

CurrentPrincipal

스레드의 현재 보안 주체(역할 기반 보안용)를 가져오거나 설정합니다.

CurrentThread

현재 실행 중인 스레드를 가져옵니다.

CurrentUICulture

리소스 관리자가 런타임에 문화권 관련 리소스를 찾기 위해 사용하는 현재 문화권을 가져오거나 설정합니다.

ExecutionContext

현재 스레드의 다양한 컨텍스트 정보를 포함하는 ExecutionContext 개체를 가져옵니다.

IsAlive

현재 스레드의 실행 상태를 나타내는 값을 가져옵니다.

IsBackground

스레드가 배경 스레드인지를 나타내는 값을 가져오거나 설정합니다.

IsThreadPoolThread

스레드가 관리되는 스레드 풀에 속하는지를 나타내는 값을 가져옵니다.

ManagedThreadId

현재 관리되는 스레드의 고유 식별자를 가져옵니다.

Name

스레드의 이름을 가져오거나 설정합니다.

Priority

스레드의 예약 우선 순위를 나타내는 값을 가져오거나 설정합니다.

ThreadState

현재 스레드의 상태를 포함하는 값을 가져옵니다.

메서드

Abort()
사용되지 않음.

이 메서드가 호출되는 스레드에서 ThreadAbortException을 발생시켜 스레드 종료 프로세스를 시작합니다. 이 메서드를 호출하면 대개 스레드가 종료됩니다.

Abort(Object)
사용되지 않음.

이 메서드가 호출되는 스레드에서 ThreadAbortException을 발생시켜 스레드 종료 프로세스를 시작하고, 스레드 종료에 대한 예외 정보를 제공합니다. 이 메서드를 호출하면 대개 스레드가 종료됩니다.

AllocateDataSlot()

모든 스레드에 명명되지 않은 데이터 슬롯을 할당합니다. 성능을 향상시키려면 ThreadStaticAttribute 특성으로 표시된 필드를 대신 사용합니다.

AllocateNamedDataSlot(String)

모든 스레드에 명명된 데이터 슬롯을 할당합니다. 성능을 향상시키려면 ThreadStaticAttribute 특성으로 표시된 필드를 대신 사용합니다.

BeginCriticalRegion()

스레드 중단 또는 처리되지 않은 예외로 인해 애플리케이션 도메인의 다른 작업이 손상될 수 있는 코드 영역이 실행될 수 있다는 사실을 호스트에 알립니다.

BeginThreadAffinity()

관리되는 코드가 현재 실제 운영 체제 스레드의 ID에 종속되는 명령을 실행하려고 한다는 사실을 호스트에 알립니다.

DisableComObjectEagerCleanup()

현재 스레드에 대해 RCW(런타임 호출 가능 래퍼)의 자동 정리를 해제합니다.

EndCriticalRegion()

스레드 중단 또는 처리되지 않은 예외가 현재 작업에만 영향을 주는 코드 영역이 실행될 것임을 호스트에 알립니다.

EndThreadAffinity()

관리되는 코드가 현재 실제 운영 체제 스레드의 ID에 종속되는 명령의 실행을 완료했음을 호스트에 알립니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
Finalize()

가비지 컬렉션기에서 Thread 개체를 회수할 때 리소스가 해제되고 다른 정리 작업이 수행되도록 합니다.

FreeNamedDataSlot(String)

프로세스의 모든 스레드에 대해 이름과 슬롯 간의 연관을 없앱니다. 성능을 향상시키려면 ThreadStaticAttribute 특성으로 표시된 필드를 대신 사용합니다.

GetApartmentState()

아파트 상태를 나타내는 ApartmentState 값을 반환합니다.

GetCompressedStack()
사용되지 않음.
사용되지 않음.

현재 스레드 스택을 캡처하는 데 사용할 수 있는 CompressedStack 개체를 반환합니다.

GetCurrentProcessorId()

현재 스레드가 실행 중인 프로세서를 나타내는 데 사용되는 ID를 가져옵니다.

GetData(LocalDataStoreSlot)

현재 스레드의 도메인 내에서 현재 스레드의 지정된 슬롯에서 값을 검색합니다. 성능을 향상시키려면 ThreadStaticAttribute 특성으로 표시된 필드를 대신 사용합니다.

GetDomain()

현재 스레드가 실행 중인 현재 도메인을 반환합니다.

GetDomainID()

고유한 애플리케이션 도메인 식별자를 반환합니다.

GetHashCode()

현재 스레드의 해시 코드를 반환합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetNamedDataSlot(String)

명명된 데이터 슬롯을 찾습니다. 성능을 향상시키려면 ThreadStaticAttribute 특성으로 표시된 필드를 대신 사용합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Interrupt()

WaitSleepJoin 스레드 상태에 있는 스레드를 중단합니다.

Join()

표준 COM 및 SendMessage 펌프를 계속 수행하면서 이 인스턴스가 나타내는 스레드가 종료될 때까지 호출 스레드를 차단합니다.

Join(Int32)

표준 COM 및 SendMessage 펌프를 계속 수행하면서 이 인스턴스가 나타내는 스레드가 종료되거나 지정된 시간이 경과할 때까지 호출 스레드를 차단합니다.

Join(TimeSpan)

표준 COM 및 SendMessage 펌프를 계속 수행하면서 이 인스턴스가 나타내는 스레드가 종료되거나 지정된 시간이 경과할 때까지 호출 스레드를 차단합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemoryBarrier()

다음과 같이 메모리 액세스를 동기화합니다. 현재 스레드를 실행 중인 프로세서는 MemoryBarrier()에 대한 호출 이전의 메모리 액세스가 MemoryBarrier()에 대한 호출 이후의 메모리 액세스 뒤에 실행되는 방식으로 명령을 다시 정렬할 수 없습니다.

ResetAbort()
사용되지 않음.

현재 스레드에 대해 요청된 Abort(Object)를 취소합니다.

Resume()
사용되지 않음.
사용되지 않음.
사용되지 않음.

일시 중단된 스레드를 다시 시작합니다.

SetApartmentState(ApartmentState)

스레드를 시작하기 전에 스레드의 아파트 상태를 설정합니다.

SetCompressedStack(CompressedStack)
사용되지 않음.
사용되지 않음.

캡처한 CompressedStack을 현재 스레드에 적용합니다.

SetData(LocalDataStoreSlot, Object)

해당 스레드의 현재 도메인에 대해 현재 실행 중인 스레드의 지정된 슬롯에서 데이터를 설정합니다. 성능을 향상시키려면 ThreadStaticAttribute 특성으로 표시된 필드를 대신 사용합니다.

Sleep(Int32)

지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다.

Sleep(TimeSpan)

지정된 시간 동안 현재 스레드를 일시 중단합니다.

SpinWait(Int32)

스레드가 iterations 매개 변수에서 정의하는 시간 동안 대기하도록 합니다.

Start()

운영 체제에서 현재 인스턴스의 상태를 Running으로 변경하도록 합니다.

Start(Object)

운영 체제에서 현재 인스턴스의 상태를 Running으로 변경하도록 하며 경우에 따라 스레드가 실행하는 메서드에 사용될 데이터가 포함된 개체를 제공합니다.

Suspend()
사용되지 않음.
사용되지 않음.
사용되지 않음.

스레드를 일시 중단하며 스레드가 이미 일시 중단된 경우에는 아무런 효과도 나타나지 않습니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
TrySetApartmentState(ApartmentState)

스레드를 시작하기 전에 스레드의 아파트 상태를 설정합니다.

UnsafeStart()

운영 체제에서 현재 인스턴스의 상태를 Running으로 변경하도록 합니다.

UnsafeStart(Object)

운영 체제에서 현재 인스턴스의 상태를 Running으로 변경하도록 하며 경우에 따라 스레드가 실행하는 메서드에 사용될 데이터가 포함된 개체를 제공합니다.

VolatileRead(Byte)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(Double)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(Int16)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(Int32)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(Int64)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(IntPtr)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(Object)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(SByte)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(Single)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(UInt16)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(UInt32)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(UInt64)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileRead(UIntPtr)
사용되지 않음.

필드의 값을 읽습니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 뒤에 나타나는 경우 프로세서가 이 메서드 앞으로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Byte, Byte)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Double, Double)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Int16, Int16)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Int32, Int32)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Int64, Int64)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(IntPtr, IntPtr)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Object, Object)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(SByte, SByte)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(Single, Single)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(UInt16, UInt16)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(UInt32, UInt32)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(UInt64, UInt64)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

VolatileWrite(UIntPtr, UIntPtr)
사용되지 않음.

필드에 값을 씁니다. 필요한 시스템에서는 프로세서가 메모리 작업을 다시 정렬하는 것을 막는 메모리 차단을 다음과 같이 삽입합니다. 코드에서 읽기 또는 쓰기가 이 메서드 앞에 나타나는 경우 프로세서가 이 메서드 뒤로 읽기 또는 쓰기를 이동할 수 없습니다.

Yield()

호출 스레드가 현재 프로세서에서 실행할 준비가 되어 있는 다른 스레드에 실행 명령을 내리도록 합니다. 운영 체제에서 실행 명령을 내릴 스레드를 선택합니다.

명시적 인터페이스 구현

_Thread.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

_Thread.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

_Thread.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

_Thread.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

적용 대상

스레드 보안

이 형식은 스레드로부터 안전합니다.

추가 정보