MTAThreadAttribute Classe

Definição

Indica que o modelo de threading COM para um aplicativo é MTA (Multi-Threaded Apartment).

public ref class MTAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class MTAThreadAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MTAThreadAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type MTAThreadAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
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 Main() método em C# e Visual Basic). Não tem efeito sobre outros métodos. Para definir o estado de apartment dos threads que você inicia em seu código, use o Thread.SetApartmentState método ou Thread.TrySetApartmentState antes de iniciar o thread.

Observação

Para obter uma visão geral dos modelos de threading COM, consulte Noções básicas e uso de modelos de threading COM.

Os modelos de threading COM só se aplicam a aplicativos que usam a interoperabilidade COM. O modelo de threading COM pode ser definido como apartment de thread único ou apartment multithreaded. O thread do aplicativo só será inicializado para interoperabilidade COM se o thread realmente fizer uma chamada para um componente COM. Se a interoperabilidade COM não for usada, o thread não será inicializado e o MTAThreadAttribute atributo, se estiver presente, não terá efeito.

A partir do .NET Framework versão 2.0, o modelo de threading padrão para interoperabilidade COM depende da linguagem na qual você está desenvolvendo seu aplicativo, como mostra a tabela a seguir.

Idioma Modelo de apartamento COM
C# Apartamento multithread
C++ Apartamento multithread
Visual Basic Apartment de thread único

Para alterar esses padrões, use o MTAThreadAttribute 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. No C++, você também pode usar a opção do vinculador /CLRTHREADATTRIBUTE (Definir Atributo de Thread CLR) para especificar o modelo apartment.

Alguns dos casos em que você deseja usar o MTAThreadAttribute atributo para definir explicitamente o modelo de threading como apartment multithread incluem o seguinte:

  • Você está desenvolvendo um aplicativo do Visual Basic que chama para uma biblioteca C# que, por sua vez, depende da interoperabilidade COM. Como o modelo de apartment multithreaded é o padrão para C#, você deve alterar o modelo de threading do aplicativo para multithread usando o MTAThreadAttribute atributo .

  • Seu aplicativo faz chamadas para componentes COM que usam o modelo de apartment multithreaded.

Construtores

MTAThreadAttribute()

Inicializa uma nova instância da classe MTAThreadAttribute.

Propriedades

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

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

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

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

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

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

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 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.

(Herdado de Attribute)

Aplica-se a

Confira também