MTAThreadAttribute Classe

Definição

Indica que o modelo de threading COM para uma aplicação é multithreaded apartment (MTA).

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

Observações

Aplique este atributo ao método do ponto de entrada (o método Main() em C# e Visual Basic). Não tem efeito noutros métodos. Para definir o estado de apartamento dos threads que começas no teu código, usa o Thread.SetApartmentState método ou Thread.TrySetApartmentState antes de iniciar o thread.

Note

Para uma visão geral dos modelos de threading COM, veja Compreender e Utilizar Modelos de Threading COM.

Os modelos de threading COM aplicam-se apenas a aplicações que utilizam interoperabilidade COM. O modelo de threading COM pode ser definido como apartamento single-threaded ou multithreaded. O thread de aplicação só é inicializado para interoperabilidade COM se o thread efetuar efetivamente uma chamada a um componente COM. Se a interoperabilidade COM não for utilizada, então a thread não é inicializada, e o MTAThreadAttribute atributo, se estiver presente, não tem efeito.

A partir da versão 2.0 do .NET Framework, o modelo de threading padrão para interoperabilidade COM depende da linguagem em que está a desenvolver a sua aplicação, como mostra a tabela seguinte.

Linguagem Modelo de apartamento COM
C# Apartamento multithread
C++ Apartamento multithread
Visual Basic Apartamento de uma só linha

Para alterar estes predefinidos, usa o MTAThreadAttribute atributo para definir o modelo de threading da aplicação, ou chama o Thread.SetApartmentState método or Thread.TrySetApartmentState antes de iniciar a thread para definir o modelo de threading para uma thread específica. Em C++, também pode usar a opção linker /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) para especificar o modelo do apartamento.

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

  • Estás a desenvolver uma aplicação Visual Basic que liga a uma biblioteca C# que, por sua vez, depende da interoperabilidade COM. Como o modelo multithreaded apartment é o padrão para C#, deve alterar o modelo de threading da sua aplicação para multithreaded usando o MTAThreadAttribute atributo.
  • A sua aplicação faz chamadas para componentes COM que utilizam o modelo de apartamento multithreaded.

Construtores

Name Description
MTAThreadAttribute()

Inicializa uma nova instância da MTAThreadAttribute classe.

Propriedades

Name Description
TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

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

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

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

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a

Ver também