MTAThreadAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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) |