STAThreadAttribute STAThreadAttribute STAThreadAttribute STAThreadAttribute Class

정의

응용 프로그램에 대한 COM 스레딩 모델이 STA(단일 스레드 아파트)인지 여부를 나타냅니다.Indicates that the COM threading model for an application is single-threaded apartment (STA).

public ref class STAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute
type STAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class STAThreadAttribute
Inherits Attribute
상속
STAThreadAttributeSTAThreadAttributeSTAThreadAttributeSTAThreadAttribute
특성

설명

진입점 메서드를이 특성을 적용 (의 Main() 메서드 C# 및 Visual Basic).Apply this attribute to the entry point method (the Main() method in C# and Visual Basic). 다른 메서드에 대해 효과가 없습니다.It has no effect on other methods. 코드에서 시작 하는 스레드의 아파트 상태를 설정 하려면 사용 합니다 Thread.SetApartmentState 또는 Thread.TrySetApartmentState 스레드를 시작 하기 전에 메서드.To set the apartment state of threads you start in your code, use the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread.

참고

COM 스레딩 모델의 개요를 보려면 이해와 Using COM Threading Models합니다.For an overview of COM threading models, see Understanding and Using COM Threading Models.

COM 스레딩 모델 COM interop를 사용 하는 응용 프로그램에만 적용 됩니다.COM threading models only apply to applications that use COM interop. COM 스레딩 모델이 단일 스레드 아파트 또는 다중 스레드 아파트를 설정할 수 있습니다.The COM threading model can be set to single-threaded apartment or multithreaded apartment. 응용 프로그램 스레드는 스레드가 실제로 COM 구성 요소를 호출 하는 경우에 COM interop에 대 한 초기화 됩니다.The application thread is only initialized for COM interop if the thread actually makes a call to a COM component. COM interop을 사용 하지 않는 경우 스레드는 초기화 되지 않은 및 STAThreadAttribute 특성이 있는 경우 영향을 주지 않습니다.If COM interop is not used, then the thread is not initialized, and the STAThreadAttribute attribute, if it is present, has no effect.

.NET Framework 버전 2.0 부터는 다음 표와 같이 응용 프로그램을 개발 하는 언어에 따라 달라 집니다 스레딩 모델 COM interop에 대 한 기본값입니다.Starting with the .NET Framework version 2.0, the default threading model for COM interop depends on the language in which you are developing your application, as the following table shows.

언어Language COM 아파트 모델COM apartment model
C#C# 다중 스레드 아파트Multithreaded apartment
C++C++ 다중 스레드 아파트Multithreaded apartment
Visual BasicVisual Basic 단일 스레드 아파트Single-threaded apartment

이러한 기본값을 변경 하려면 사용 합니다 STAThreadAttribute 응용 프로그램 또는 호출에 대 한 스레딩 모델을 설정 하는 특성을 Thread.SetApartmentState 또는 Thread.TrySetApartmentState 메서드를 특정 스레드에 대 한 스레딩 모델을 설정 하려면 스레드를 시작 하기 전에 합니다.To change these defaults, you use the STAThreadAttribute attribute to set the threading model for the application, or call the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread to set the threading model for a particular thread. C + +에서 사용할 수도 있습니다는 /CLRTHREADATTRIBUTE 링커 옵션 아파트 모델을 지정 합니다.In C++, you can also use the /CLRTHREADATTRIBUTE linker option to specify the apartment model.

ASP.NET 응용 프로그램 설정 해야 합니다 ASPCompat 특성을 @ Page 지시문을 true 페이지를 STA 스레드 풀에서 처리 하도록.ASP.NET applications should set the ASPCompat attribute of the @ Page directive to true to force the page to be serviced by the STA thread pool.

다음은 몇 가지는 사용 하려는 경우는 STAThreadAttribute 특성을 단일 스레드 아파트 스레딩 모델을 명시적으로 설정 하려면:Here are some of the cases in which you'll want to use the STAThreadAttribute attribute to explicitly set the threading model to single-threaded apartment:

  • Windows Forms 앱을 개발 중입니다.You're developing a Windows Forms app. 일반 대화 상자, 클립보드 또는 Windows와 같은 Windows 시스템 구성 요소와 통신 하는 경우 또는 끌어서 놓기 기능과 같은 시스템 기능을 사용할 경우 단일 스레드 Windows Forms 앱이 여야 합니다.Windows Forms apps must be single-threaded if they communicate with Windows system components such as the Clipboard or Windows common dialog boxes, or if they use system features such as drag-and-drop functionality. C# Windows Forms 응용 프로그램 템플릿을 자동으로 추가 된 STAThreadAttribute C# 프로젝트에 대 한 특성입니다.The Windows Forms Application template for C# automatically adds the STAThreadAttribute attribute to C# projects. 단일 스레드 아파트 모델을 Visual Basic에 대 한 기본값 이기 때문에 특성에 대 한 않아도가 됩니다.Because the single-threaded apartment model is the default for Visual Basic, there is no need for the attribute.

  • COM interop를 사용 하는 Visual Basic 라이브러리를 호출 하는 C# 앱을 개발 중입니다.You're developing a C# app that calls a Visual Basic library, which, in turn, relies on COM interop. 단일 스레드 아파트 모델을 Visual Basic에 대 한 기본값 이기 때문에 변경 해야 응용 프로그램의 스레딩 모델이 단일 스레드를 사용 하 여는 STAThreadAttribute 특성입니다.Because the single-threaded apartment model is the default for Visual Basic, you should change your app's threading model to single-threaded by using the STAThreadAttribute attribute.

  • 응용 프로그램에서는 단일 스레드 아파트 모델을 사용 하는 COM 구성 요소를 호출 합니다.Your application makes calls to COM components that use the single-threaded apartment model.

생성자

STAThreadAttribute() STAThreadAttribute() STAThreadAttribute() STAThreadAttribute()

STAThreadAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the STAThreadAttribute class.

메서드

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

@FSHO2@이 인스턴스가 지정한 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

명시적 인터페이스 구현

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

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

속성

TypeId TypeId TypeId TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

적용 대상

추가 정보