MTAThreadAttribute Classe

Definição

Indica que o modelo de threading COM para um aplicativo é MTA (Multi-Threaded Apartment).Indicates that the COM threading model for an application is multithreaded apartment (MTA).

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

Comentários

Aplique esse atributo ao método de ponto de entrada (o método Main() 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, use o método Thread.SetApartmentState ou Thread.TrySetApartmentState 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 e o atributo MTAThreadAttribute, se estiver presente, não terá nenhum efeito.If COM interop is not used, then the thread is not initialized, and the MTAThreadAttribute 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.

LinguagemLanguage 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 atributo MTAThreadAttribute para definir o modelo de threading para o aplicativo ou chame o método Thread.SetApartmentState 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 MTAThreadAttribute 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 (definir atributo de thread CLR) para especificar o modelo de apartamento.In C++, you can also use the /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) linker option to specify the apartment model.

Alguns dos casos em que você deseja usar o atributo MTAThreadAttribute para definir explicitamente o modelo de Threading como Apartment multithread incluem o seguinte:Some of the cases in which you want to use the MTAThreadAttribute attribute to explicitly set the threading model to multithreaded apartment include the following:

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

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

Construtores

MTAThreadAttribute()

Inicializa uma nova instância da classe MTAThreadAttribute.Initializes a new instance of the MTAThreadAttribute 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 a 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