다음을 통해 공유


STAThreadAttribute 클래스

응용 프로그램에 대한 COM 스레딩 모델이 STA(단일 스레드 아파트)인지 여부를 나타냅니다.

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

구문

‘선언
<AttributeUsageAttribute(AttributeTargets.Method)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class STAThreadAttribute
    Inherits Attribute
‘사용 방법
Dim instance As STAThreadAttribute
[AttributeUsageAttribute(AttributeTargets.Method)] 
[ComVisibleAttribute(true)] 
public sealed class STAThreadAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method)] 
[ComVisibleAttribute(true)] 
public ref class STAThreadAttribute sealed : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Method) */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class STAThreadAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Method) 
ComVisibleAttribute(true) 
public final class STAThreadAttribute extends Attribute

설명

이 특성은 진입점 메서드(C# 및 Visual Basic의 경우 Main() 메서드)에 적용합니다. 이 특성은 다른 메서드에는 아무런 영향이 없습니다. 코드에서 시작할 스레드의 아파트 상태를 설정하려면 스레드를 시작하기 전에 Thread.SetApartmentState 메서드를 사용합니다.

참고

.NET Framework 버전 1.0 및 1.1에서는 스레드를 시작하기 전에 Thread.ApartmentState 속성을 설정합니다.

COM 스레딩 모델은 COM interop를 사용하는 응용 프로그램에만 관련됩니다. COM interop를 사용하지 않는 응용 프로그램에서 이 특성을 사용해도 효과가 없습니다.

COM 스레딩 모델을 단일 스레드 아파트 또는 다중 스레드 아파트로 설정할 수 있습니다. 응용 프로그램 스레드가 COM 구성 요소에 실제로 호출을 하는 경우 스레드는 COM interop에 대해서만 초기화됩니다. COM interop가 사용되지 않으면 해당 스레드가 초기화되지 않습니다.

.NET Framework 버전 1.0 및 1.1에서는 코드의 첫째 줄에서 Thread.ApartmentState 속성을 설정하는 대신 Main()에서 이 특성을 사용하여 시작 코드가 실행되기 전에 스레딩 모델이 설정되도록 합니다.

중요

.NET Framework 버전 2.0에서는 새 스레드가 시작되기 전에 해당 스레드의 아파트 상태가 설정되지 않았으면 이 스레드는 ApartmentState.MTA로 초기화됩니다. 기본 응용 프로그램 스레드는 기본적으로 ApartmentState.MTA로 초기화됩니다. 더 이상 코드의 첫째 줄에서 Thread.ApartmentState 속성을 설정하여 기본 응용 프로그램 스레드를 ApartmentState.STA로 설정할 수 없습니다. 대신 STAThreadAttribute를 사용합니다.

.NET Framework 버전 2.0에서는 /CLRTHREADATTRIBUTE(CLR 스레드 특성 설정) 링커 옵션을 사용하여 C++ 응용 프로그램의 COM 스레딩 모델도 지정할 수 있습니다.

ASP.NET 응용 프로그램에서는 @ Page 지시문의 ASPCompat 특성을 true로 설정하여 STA 스레드 풀에서 페이지를 처리하도록 해야 합니다.

상속 계층 구조

System.Object
   System.Attribute
    System.STAThreadAttribute

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

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에서 지원

참고 항목

참조

STAThreadAttribute 멤버
System 네임스페이스
MTAThreadAttribute 클래스