将此属性应用于入口点方法(C# 和 Visual Basic 中的 Main() 方法)。它对其他方法无效。若要设置在代码中启动的线程的单元状态,请在启动线程前使用 Thread.SetApartmentState 方法。
COM 线程模型只适用于使用 COM interop 的应用程序。如果将此属性应用到不使用 COM interop 的应用程序,将没有任何效果。
COM 线程模型可设置为单线程单元或多线程单元。如果应用程序线程实际调用了 COM 组件,则仅为 COM interop 初始化该线程。如果没有使用 COM interop,则不初始化该线程。
在 .NET Framework 1.0 版和 1.1 版中,在 Main() 上使用此属性 (Attribute)(而不是在第一行代码上设置 Thread.ApartmentState 属性 (Property)),以确保在执行任何启动代码之前设置线程模型。
重要事项: |
|---|
| 在 .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 线程池提供页面服务。