STAThreadAttribute Classe

Definição

Indica que o modelo de threading COM para um aplicativo é STA (Single-Threaded Apartment).Indicates that the COM threading model for an application is single-threaded apartment (STA).

public ref class STAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute
type STAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class STAThreadAttribute
Inherits Attribute
Herança
STAThreadAttribute
Atributos

Comentários

Aplique esse atributo ao método de ponto de entrada ( Main() o método C# em e Visual Basic).Apply this attribute to the entry point method (the Main() method in C# and Visual Basic). Ele não tem nenhum efeito sobre outros métodos.It has no effect on other methods. Para definir o estado de apartamento dos threads que você inicia em seu código Thread.SetApartmentState , Thread.TrySetApartmentState use o método ou antes de iniciar o thread.To set the apartment state of threads you start in your code, use the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread.

Observação

Para obter uma visão geral dos modelos de Threading COM, consulte compreendendo e usando modelos de THREADING com.For an overview of COM threading models, see Understanding and Using COM Threading Models.

Modelos de Threading COM só se aplicam a aplicativos que usam interoperabilidade COM.COM threading models only apply to applications that use COM interop. O modelo de Threading COM pode ser definido como apartamento single-threaded apartment ou multi-threaded.The COM threading model can be set to single-threaded apartment or multithreaded apartment. O thread do aplicativo só será inicializado para interoperabilidade COM se o thread realmente fizer uma chamada para um componente COM.The application thread is only initialized for COM interop if the thread actually makes a call to a COM component. Se a interoperabilidade com não for usada, o thread não será inicializado STAThreadAttribute e o atributo, se estiver presente, não terá nenhum efeito.If COM interop is not used, then the thread is not initialized, and the STAThreadAttribute attribute, if it is present, has no effect.

A partir do .NET Framework versão 2,0, o modelo de Threading padrão para interoperabilidade COM depende do idioma no qual você está desenvolvendo seu aplicativo, como mostra a tabela a seguir.Starting with the .NET Framework version 2.0, the default threading model for COM interop depends on the language in which you are developing your application, as the following table shows.

IdiomaLanguage Modelo de apartamento COMCOM apartment model
C#C# Apartamento multithreadMultithreaded apartment
C++C++ Apartamento multithreadMultithreaded apartment
Visual BasicVisual Basic Apartamento de thread únicoSingle-threaded apartment

Para alterar esses padrões, use o STAThreadAttribute atributo para definir o modelo de threading para o aplicativo ou chame o Thread.SetApartmentState método ou Thread.TrySetApartmentState antes de iniciar o thread para definir o modelo de threading para um thread específico.To change these defaults, you use the STAThreadAttribute attribute to set the threading model for the application, or call the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread to set the threading model for a particular thread. No C++, você também pode usar a opção de vinculador /CLRTHREADATTRIBUTE para especificar o modelo de apartamento.In C++, you can also use the /CLRTHREADATTRIBUTE linker option to specify the apartment model.

Os aplicativos ASP.net devem definir ASPCompat o atributo da diretiva @ Page como true para forçar a página a ser atendida pelo pool de threads Sta.ASP.NET applications should set the ASPCompat attribute of the @ Page directive to true to force the page to be serviced by the STA thread pool.

Aqui estão alguns dos casos em que você desejará usar o STAThreadAttribute atributo para definir explicitamente o modelo de threading para um apartamento de thread único:Here are some of the cases in which you'll want to use the STAThreadAttribute attribute to explicitly set the threading model to single-threaded apartment:

  • Você está desenvolvendo um aplicativo Windows Forms.You're developing a Windows Forms app. Os aplicativos Windows Forms devem ser de thread único se se comunicarem com componentes do sistema Windows, como as caixas de diálogo área de transferência ou comum do Windows, ou se usarem recursos do sistema, como funcionalidade de arrastar e soltar.Windows Forms apps must be single-threaded if they communicate with Windows system components such as the Clipboard or Windows common dialog boxes, or if they use system features such as drag-and-drop functionality. O modelo de aplicativo Windows Forms C# para adiciona automaticamente STAThreadAttribute o atributo C# a projetos.The Windows Forms Application template for C# automatically adds the STAThreadAttribute attribute to C# projects. Como o modelo de apartamento de thread único é o padrão para Visual Basic, não há necessidade de o atributo.Because the single-threaded apartment model is the default for Visual Basic, there is no need for the attribute.

  • Você está desenvolvendo um C# aplicativo que chama uma biblioteca de Visual Basic, que, por sua vez, se baseia em interoperabilidade com.You're developing a C# app that calls a Visual Basic library, which, in turn, relies on COM interop. Como o modelo de apartamento de thread único é o padrão para Visual Basic, você deve alterar o modelo de Threading do aplicativo para um único thread usando o STAThreadAttribute atributo.Because the single-threaded apartment model is the default for Visual Basic, you should change your app's threading model to single-threaded by using the STAThreadAttribute attribute.

  • Seu aplicativo faz chamadas para componentes COM que usam o modelo de apartamento de thread único.Your application makes calls to COM components that use the single-threaded apartment model.

Construtores

STAThreadAttribute()

Inicializa uma nova instância da classe STAThreadAttribute.Initializes a new instance of the STAThreadAttribute class.

Propriedades

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para essa instância.Returns the hash code for this instance.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Implantações explícitas de interface

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.Maps a set of names to a corresponding set of dispatch identifiers.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.Provides access to properties and methods exposed by an object.

(Herdado de Attribute)

Aplica-se a

Veja também