请单击以进行评分并提供反馈
MSDN
MSDN Library
.NET 开发
先前版本
System

  开启低带宽视图
此页面仅适用于
Microsoft Visual Studio 2005/.NET Framework 2.0

同时提供下列产品的其他版本:
.NET Framework 类库
STAThreadAttribute 类

指示应用程序的 COM 线程模型是单线程单元 (STA)。

命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)

Visual Basic(声明)
<AttributeUsageAttribute(AttributeTargets.Method)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class STAThreadAttribute
    Inherits Attribute
Visual Basic(用法)
Dim instance As STAThreadAttribute
C#
[AttributeUsageAttribute(AttributeTargets.Method)] 
[ComVisibleAttribute(true)] 
public sealed class STAThreadAttribute : Attribute
C++
[AttributeUsageAttribute(AttributeTargets::Method)] 
[ComVisibleAttribute(true)] 
public ref class STAThreadAttribute sealed : public Attribute
J#
/** @attribute AttributeUsageAttribute(AttributeTargets.Method) */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class STAThreadAttribute extends Attribute
JScript
AttributeUsageAttribute(AttributeTargets.Method) 
ComVisibleAttribute(true) 
public final class STAThreadAttribute extends Attribute

将此属性应用于入口点方法(C# 和 Visual Basic 中的 Main() 方法)。它对其他方法无效。若要设置在代码中启动的线程的单元状态,请在启动线程前使用 Thread.SetApartmentState 方法。

Note注意

在 .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
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利  |  商标  |  隐私权声明
Page view tracker