/CLRTHREADATTRIBUTE (Set CLR Thread Attribute)

Explicitly specify the threading attribute for the entry point of your CLR program.

Syntax

/CLRTHREADATTRIBUTE:{STA|MTA|NONE}

Parameters

MTA
Applies the MTAThreadAttribute attribute to the entry point of your program.

NONE
Same as not specifying /CLRTHREADATTRIBUTE. Lets the Common Language Runtime (CLR) set the default threading attribute.

STA
Applies the STAThreadAttribute attribute to the entry point of your program.

Remarks

Setting the thread attribute is only valid when building an .exe, as it affects the entry point of the main thread.

If you use the default entry point (main or wmain, for example) specify the threading model either by using /CLRTHREADATTRIBUTE or by placing the threading attribute (STAThreadAttribute or MTAThreadAttribute) on the default entry function.

If you use a non-default entry point, specify the threading model either by using /CLRTHREADATTRIBUTE or by placing the threading attribute on the non-default entry function, and then specify the non-default entry point with /ENTRY.

If the threading model specified in source code does not agree with the threading model specified with /CLRTHREADATTRIBUTE, the linker will ignore /CLRTHREADATTRIBUTE and apply the threading model specified in source code.

It will be necessary for you to use single-threading, for example, if your CLR program hosts a COM object that uses single-threading. If your CLR program uses multi-threading, it cannot host a COM object that uses single-threading.

To set this linker option in the Visual Studio development environment

  1. Open the project's Property Pages dialog box. For details, see Set C++ compiler and build properties in Visual Studio.

  2. Select the Configuration Properties > Linker > Advanced property page.

  3. Modify the CLR Thread Attribute property.

To set this linker option programmatically

  1. See CLRThreadAttribute.

See also

MSVC linker reference
MSVC Linker Options