System.STAThreadAttribute Class

Indicates that the COM threading model for an application is single-threaded apartment (STA).

See Also: STAThreadAttribute Members

Syntax

[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute

Remarks

Apply this attribute to the entry point method (the Main() method in C# and Visual Basic). It has no effect on other methods. To set the apartment state of threads you start in your code, use the System.Threading.Thread.SetApartmentState(System.Threading.ApartmentState) method before starting the thread.

Note:

In the .NET Framework versions 1.0 and 1.1, set the System.Threading.Thread.ApartmentState property before starting the thread.

COM threading models only pertain to applications that use COM interop. Using this attribute in an application that does not use COM interop has no effect.

The COM threading model can be set to single-threaded apartment or multithreaded apartment. The application thread is only initialized for COM interop if the thread actually makes a call to a COM component. If COM interop is not used, then the thread is not initialized.

In the .NET Framework versions 1.0 and 1.1, use this attribute on Main() instead of setting the System.Threading.Thread.ApartmentState property on the first line of code, to ensure that the threading model is set before any startup code is executed.

Note:

In the .NET Framework version 2.0, new threads are initialized as System.Threading.ApartmentState.MTA if their apartment state has not been set before they are started. The main application thread is initialized to System.Threading.ApartmentState.MTA by default. You can no longer set the main application thread to System.Threading.ApartmentState.STA by setting the System.Threading.Thread.ApartmentState property on the first line of code. Use the STAThreadAttribute instead.

In the .NET Framework version 2.0, you can also specify the COM threading model for a C++ application using the /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) linker option.

ASP.NET applications should set the ASPCompat attribute of the [<topic://cpconpage>] directive to true, to force the page to be serviced by the STA thread pool.

Requirements

Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0