MTAThreadAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Indica que el modelo de subproceso COM para una aplicación es un apartamento multiproceso (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
- Herencia
- Atributos
Comentarios
Aplique este atributo al método de punto de entrada (el método Main() en C# y Visual Basic). No tiene ningún efecto en otros métodos. Para establecer el estado de apartamento de los subprocesos que inicie en el código, use el Thread.SetApartmentState método o Thread.TrySetApartmentState antes de iniciar el subproceso.
Los modelos de subprocesos COM solo se aplican a las aplicaciones que usan la interoperabilidad COM. El modelo de subprocesos COM se puede establecer en un solo subproceso o en un apartamento multiproceso. El subproceso de aplicación solo se inicializa para la interoperabilidad COM si el subproceso realiza realmente una llamada a un componente COM. Si no se usa la interoperabilidad COM, el subproceso no se inicializa y el MTAThreadAttribute atributo, si está presente, no tiene ningún efecto.
El modelo de subproceso predeterminado para la interoperabilidad COM depende del lenguaje en el que esté desarrollando la aplicación, como se muestra en la tabla siguiente.
| Language | Modelo de apartamento COM |
|---|---|
| C# | Apartamento multiproceso |
| C++ | Apartamento multiproceso |
| Visual Basic | Apartamento de un solo subproceso |
Para cambiar estos valores predeterminados, use el MTAThreadAttribute atributo para establecer el modelo de subprocesos para la aplicación, o llame al Thread.SetApartmentState método o Thread.TrySetApartmentState antes de iniciar el subproceso para establecer el modelo de subprocesos para un subproceso determinado. En C++, también puede usar la opción del enlazador /CLRTHREADATTRIBUTE (Establecer atributo de subproceso CLR) para especificar el modelo de apartamento.
Use el MTAThreadAttribute atributo para establecer explícitamente el modelo de subprocesos en el apartamento multiproceso en los casos siguientes:
- Está desarrollando una aplicación de Visual Basic que llama a una biblioteca de C# que, a su vez, se basa en la interoperabilidad COM. Dado que el modelo de apartamento multiproceso es el predeterminado para C#, debe cambiar el modelo de subproceso de la aplicación a multiproceso mediante el MTAThreadAttribute atributo .
- La aplicación realiza llamadas a componentes COM que usan el modelo de apartamento multiproceso.
Constructores
| Nombre | Description |
|---|---|
| MTAThreadAttribute() |
Inicializa una nueva instancia de la clase MTAThreadAttribute. |
Propiedades
| Nombre | Description |
|---|---|
| TypeId |
Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Heredado de Attribute) |
Métodos
| Nombre | Description |
|---|---|
| Equals(Object) |
Devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Heredado de Attribute) |
| GetHashCode() |
Devuelve el código hash de esta instancia. (Heredado de Attribute) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| IsDefaultAttribute() |
Cuando se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada. (Heredado de Attribute) |
| Match(Object) |
Cuando se reemplaza en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Heredado de Attribute) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Heredado de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera la información de tipo de un objeto, que se puede usar para obtener la información de tipo de una interfaz. (Heredado de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Heredado de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acceso a propiedades y métodos expuestos por un objeto . (Heredado de Attribute) |