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 版中,在 Main() 上使用此属性 (Attribute)(而不是在第一行代码上设置 Thread.ApartmentState 属性 (Property)),以确保在执行任何启动代码之前设置线程模型。

Note重要事项:

在 .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

线程安全

此类型的任何公共静态(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 类