STAThreadAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Indique que le modèle de thread COM d'une application est un modèle STA (Single-Threaded Apartment).
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
- Héritage
- Attributs
Remarques
Appliquez cet attribut à la méthode de point d’entrée (la Main()
méthode en C# et Visual Basic). Elle n’a aucun effet sur d’autres méthodes. Pour définir l’état d’appartement des threads que vous démarrez dans votre code, utilisez le ou Thread.TrySetApartmentState la Thread.SetApartmentState méthode avant de démarrer le thread.
Notes
Pour obtenir une vue d’ensemble des modèles de thread COM, consultez Présentation et utilisation de modèles de thread COM.
Les modèles de thread COM s’appliquent uniquement aux applications qui utilisent l’interopérabilité COM. Le modèle de thread COM peut être défini sur un appartement à thread unique ou un appartement multithread. Le thread d’application n’est initialisé que pour l’interopérabilité COM si le thread effectue réellement un appel à un composant COM. Si l’interopérabilité COM n’est pas utilisée, le thread n’est pas initialisé et l’attribut STAThreadAttribute , s’il est présent, n’a aucun effet.
À compter de la .NET Framework version 2.0, le modèle de thread par défaut pour l’interopérabilité COM dépend du langage dans lequel vous développez votre application, comme le montre le tableau suivant.
Langage | Modèle d’appartement COM |
---|---|
C# | Appartement multithread |
C++ | Appartement multithread |
Visual Basic | Appartement à thread unique |
Pour modifier ces valeurs par défaut, vous utilisez l’attribut pour définir le STAThreadAttribute modèle de thread pour l’application, ou appelez le ou Thread.TrySetApartmentState la Thread.SetApartmentState méthode avant de commencer le thread pour définir le modèle de thread pour un thread particulier. En C++, vous pouvez également utiliser l’option / CLRTHREADATTRIBUTE pour spécifier le modèle d’appartement.
ASP.NET applications doivent définir l’attribut ASPCompat
de la directive @ Page pour true
forcer le service de la page par le pool de threads STA.
Voici quelques-uns des cas dans lesquels vous souhaitez utiliser l’attribut pour définir explicitement le modèle de thread sur un STAThreadAttribute appartement à thread unique :
Vous développez une application Windows Forms. Windows Forms applications doivent être à thread unique s’ils communiquent avec Windows composants système tels que le Presse-papiers ou Windows boîtes de dialogue courantes, ou s’ils utilisent des fonctionnalités système telles que la fonctionnalité glisser-déplacer. Le modèle d’application Windows Forms pour C# ajoute automatiquement l’attribut STAThreadAttribute aux projets C#. Étant donné que le modèle d’appartement à thread unique est la valeur par défaut pour Visual Basic, il n’est pas nécessaire pour l’attribut.
Vous développez une application C# qui appelle une bibliothèque Visual Basic, qui, à son tour, s’appuie sur l’interopérabilité COM. Étant donné que le modèle d’appartement à thread unique est la valeur par défaut pour Visual Basic, vous devez changer le modèle de thread de votre application en thread unique à l’aide de l’attributSTAThreadAttribute.
Votre application effectue des appels aux composants COM qui utilisent le modèle d’appartement à thread unique.
Constructeurs
STAThreadAttribute() |
Initialise une nouvelle instance de la classe STAThreadAttribute. |
Propriétés
TypeId |
Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute. (Hérité de Attribute) |
Méthodes
Equals(Object) |
Retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
GetHashCode() |
Retourne le code de hachage de cette instance. (Hérité de Attribute) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
IsDefaultAttribute() |
En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute) |
Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute) |