STAThreadAttribute Clase

Definición

Indica que el modelo de subprocesos COM de una aplicación es contenedor uniproceso (STA).

public ref class STAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class STAThreadAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type STAThreadAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type STAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class STAThreadAttribute
Inherits Attribute
Herencia
STAThreadAttribute
Atributos

Comentarios

Aplique este atributo al método de punto de entrada (el Main() método en C# y Visual Basic). No tiene ningún efecto en otros métodos. Para establecer el estado de apartamento de los subprocesos que se inician en el código, use el Thread.SetApartmentState método o Thread.TrySetApartmentState antes de iniciar el subproceso.

Nota

Para obtener información general sobre los modelos de subprocesos COM, consulte Descripción y uso de modelos de subprocesos COM.

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 apartamento de subproceso único 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 STAThreadAttribute atributo, si está presente, no tiene ningún efecto.

A partir de la versión 2.0 de .NET Framework, 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.

Idioma Modelo de apartamento COM
C# Apartamento multiproceso
C++ Apartamento multiproceso
Visual Basic Apartamento de un solo subproceso

Para cambiar estos valores predeterminados, use el STAThreadAttribute 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 para especificar el modelo de apartamento.

ASP.NET las aplicaciones deben establecer el ASPCompat atributo de la directiva @ Page para true forzar que el grupo de subprocesos sta pueda atender la página.

Estos son algunos de los casos en los que querrá usar el STAThreadAttribute atributo para establecer explícitamente el modelo de subprocesos en el apartamento de un solo subproceso:

  • Está desarrollando una aplicación de Windows Forms. Las aplicaciones de Windows Forms deben ser de un solo subproceso si se comunican con componentes del sistema de Windows, como el Portapapeles o los cuadros de diálogo comunes de Windows, o si usan características del sistema como la funcionalidad de arrastrar y colocar. La plantilla aplicación de Windows Forms para C# agrega automáticamente el STAThreadAttribute atributo a proyectos de C#. Dado que el modelo de apartamento de un solo subproceso es el valor predeterminado para Visual Basic, no es necesario el atributo .

  • Está desarrollando una aplicación de C# que llama a una biblioteca de Visual Basic, que, a su vez, se basa en la interoperabilidad COM. Dado que el modelo de apartamento de un solo subproceso es el predeterminado para Visual Basic, debe cambiar el modelo de subprocesos de la aplicación a un único subproceso mediante el STAThreadAttribute atributo .

  • La aplicación realiza llamadas a componentes COM que usan el modelo de apartamento de un solo subproceso.

Constructores

STAThreadAttribute()

Inicializa una nueva instancia de la clase STAThreadAttribute.

Propiedades

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que 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()

Si 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 invalida 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 Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

_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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos 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 las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a

Consulte también