Compartilhar via


MTAThreadAttribute Classe

Definição

Indica que o modelo de threading COM para um aplicativo é MTA (apartamento multithreaded).

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 método Main() em C# e Visual Basic). Ele não tem efeito sobre outros métodos. Para definir o estado do apartamento de threads que você inicia em seu código, use o método ou Thread.TrySetApartmentState o Thread.SetApartmentState método antes de iniciar o thread.

Os modelos de threading COM se aplicam somente a aplicativos que usam a interoperabilidade COM. O modelo de threading COM pode ser definido como apartamento com thread único ou apartamento multithread. 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 ele estiver presente, não terá efeito.

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.

Linguagem Modelo de apartamento COM
C# Apartamento multithreaded
C++ Apartamento multithreaded
Visual Basic Apartamento com 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 de vinculador /CLRTHREADATTRIBUTE (Definir Atributo de Thread CLR) para especificar o modelo de apartamento.

Use o MTAThreadAttribute atributo para definir explicitamente o modelo de threading como um apartamento multithreaded nos seguintes casos:

  • Você está desenvolvendo um aplicativo Visual Basic que chama uma biblioteca C# que, por sua vez, depende da interoperabilidade COM. Como o modelo de apartamento 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 apartamento multithreaded.

Construtores

Nome Description
MTAThreadAttribute()

Inicializa uma nova instância da classe MTAThreadAttribute.

Propriedades

Nome Description
TypeId

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

(Herdado de Attribute)

Métodos

Nome Description
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 dessa 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 Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

Nome Description
_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 de um objeto, que podem ser usadas para obter as informações de tipo de 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