Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

STAThreadAttribute classe

 

Date de publication : novembre 2016

Indique que le modèle de thread COM d'une application est un modèle STA (Single-Threaded Apartment).

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

System.Object
  System.Attribute
    System.STAThreadAttribute

[AttributeUsageAttribute(AttributeTargets.Method)]
[ComVisibleAttribute(true)]
public sealed class STAThreadAttribute : Attribute

NomDescription
System_CAPS_pubmethodSTAThreadAttribute()

Initialise une nouvelle instance de la classe STAThreadAttribute.

NomDescription
System_CAPS_pubpropertyTypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.(Hérité de Attribute.)

NomDescription
System_CAPS_pubmethodEquals(Object)

Cette API prend en charge l’infrastructure de produit et n’est pas destinée à être utilisée directement depuis votre code. Retourne une valeur qui indique si cette instance est égale à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodGetHashCode()

Retourne le code de hachage de cette instance.(Hérité de Attribute.)

System_CAPS_pubmethodGetType()

Obtient le Type de l'instance actuelle.(Hérité de Object.)

System_CAPS_pubmethodIsDefaultAttribute()

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

System_CAPS_pubmethodMatch(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance équivaut à un objet spécifié.(Hérité de Attribute.)

System_CAPS_pubmethodToString()

Retourne une chaîne qui représente l'objet actuel.(Hérité de Object.)

NomDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.(Hérité de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_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.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_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.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_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.)

Appliquer cet attribut à la méthode de point d’entrée (la Main() méthode en c# et Visual Basic). Il n’a aucun effet sur les autres méthodes. Pour définir l’état de cloisonnement des threads que vous démarrez dans votre code, utilisez la Thread.SetApartmentState ou Thread.TrySetApartmentState méthode avant de démarrer le thread.

System_CAPS_noteRemarque

Pour une vue d’ensemble des modèles de thread COM, consultez Understanding and Using COM Threading Models.

Modèles de thread COM s’appliquent uniquement aux applications qui utilisent COM interop. Le modèle de thread COM peut être défini à cloisonné monothread ou multithread cloisonné. Le thread d’application est initialisé pour COM interop s’appelle un composant COM uniquement. Si COM interop n’est pas utilisé, le thread n’est pas initialisé et le STAThreadAttribute attribut, si elle est présente, n’a aucun effet.

À compter de .NET Framework version 2.0, la valeur par défaut de modèle pour COM interop de thread dépend de la langue dans laquelle vous développez votre application, comme le tableau suivant.

Langage

Modèle de cloisonnement COM

C#

Cloisonnement multithread

C++

Cloisonnement multithread

Visual Basic

Thread cloisonné

Pour modifier ces valeurs par défaut, vous utilisez la STAThreadAttribute attribut à définir le modèle de thread pour l’application, ou appelez le Thread.SetApartmentState ou Thread.TrySetApartmentState méthode avant de démarrer le thread pour définir le modèle de thread un thread particulier. En C++, vous pouvez également utiliser le /CLRTHREADATTRIBUTE option de l’éditeur de liens pour spécifier le modèle cloisonné.

Les applications ASP.NET doivent affecter la ASPCompat attribut de la @ Page directive true pour forcer la page à être traitées par le pool de threads STA.

Voici quelques-uns des cas dans lesquels vous devrez utiliser le STAThreadAttribute attribut pour définir explicitement le modèle de thread unique cloisonné :

  • Vous développez une application Windows Forms. Les applications Windows Forms doivent être monothread si elles communiquent avec les composants du système Windows tels que le Presse-papiers ou Windows boîtes de dialogue communes, ou s’ils utilisent des fonctions système telles que la fonctionnalité de glisser-déplacer. Le modèle Application Windows Forms c# ajoute automatiquement le STAThreadAttribute attribut aux projets c#. Étant donné que le modèle de thread cloisonné 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 COM interop. Étant donné que le modèle de thread cloisonné est la valeur par défaut pour Visual Basic, vous devez modifier des modèle de thread de votre application à thread unique à l’aide de la STAThreadAttribute attribut.

  • Votre application effectue des appels aux composants COM qui utilisent le modèle de thread cloisonné.

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1

Tous les membres statiques publics ( Shared en Visual Basic) de ce type sont thread-safe. Les membres d’instance n’ont pas la garantie d’être thread-safe.

Retour au début
Afficher: