STAThreadAttribute STAThreadAttribute STAThreadAttribute STAThreadAttribute Class

Définition

Indique que le modèle de thread COM d'une application est un modèle STA (Single-Threaded Apartment).Indicates that the COM threading model for an application is single-threaded apartment (STA).

public ref class STAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute
type STAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class STAThreadAttribute
Inherits Attribute
Héritage
STAThreadAttributeSTAThreadAttributeSTAThreadAttributeSTAThreadAttribute
Attributs

Remarques

Appliquez cet attribut à la méthode de point d’entrée (le Main() méthode en c# et Visual Basic).Apply this attribute to the entry point method (the Main() method in C# and Visual Basic). Il n’a aucun effet sur les autres méthodes.It has no effect on other methods. Pour définir l’état de cloisonnement des threads que vous démarrez dans votre code, utilisez le Thread.SetApartmentState ou Thread.TrySetApartmentState méthode avant de démarrer le thread.To set the apartment state of threads you start in your code, use the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread.

Notes

Pour une vue d’ensemble de modèles de thread COM, consultez compréhension et Using COM Threading Models.For an overview of COM threading models, see Understanding and Using COM Threading Models.

Les modèles de thread COM s’appliquent uniquement aux applications qui utilisent COM interop.COM threading models only apply to applications that use COM interop. Le modèle de thread COM peut être défini à cloisonnement monothread ou multithread cloisonné.The COM threading model can be set to single-threaded apartment or multithreaded apartment. Le thread d’application est initialisé pour COM interop uniquement si le thread effectue un appel à un composant COM.The application thread is only initialized for COM interop if the thread actually makes a call to a COM component. 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.If COM interop is not used, then the thread is not initialized, and the STAThreadAttribute attribute, if it is present, has no effect.

À 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.Starting with the .NET Framework version 2.0, the default threading model for COM interop depends on the language in which you are developing your application, as the following table shows.

LangueLanguage Modèle de cloisonnement COMCOM apartment model
C#C# Cloisonnement multithreadMultithreaded apartment
C++C++ Cloisonnement multithreadMultithreaded apartment
Visual BasicVisual Basic Thread unique cloisonnéSingle-threaded apartment

Pour modifier ces valeurs par défaut, vous utilisez le STAThreadAttribute attribut à définir le modèle de thread pour l’application ou un appel de la Thread.SetApartmentState ou Thread.TrySetApartmentState méthode avant de démarrer le thread pour définir le modèle de thread pour un thread particulier.To change these defaults, you use the STAThreadAttribute attribute to set the threading model for the application, or call the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread to set the threading model for a particular thread. En C++, vous pouvez également utiliser le /CLRTHREADATTRIBUTE option de l’éditeur de liens pour spécifier le modèle de cloisonnement.In C++, you can also use the /CLRTHREADATTRIBUTE linker option to specify the apartment model.

Les applications ASP.NET doivent affecter la ASPCompat attribut de la @ Page directive à true pour forcer la page d’être traitées par le pool de threads STA.ASP.NET applications should set the ASPCompat attribute of the @ Page directive to true to force the page to be serviced by the STA thread pool.

Voici les cas dans lesquels vous souhaiterez utiliser le STAThreadAttribute attribut pour définir explicitement le modèle de thread unique cloisonné :Here are some of the cases in which you'll want to use the STAThreadAttribute attribute to explicitly set the threading model to single-threaded apartment:

  • Vous développez une application Windows Forms.You're developing a Windows Forms app. Les applications Windows Forms doivent être monothread si ils communiquent avec les composants de système de Windows, tels que le Presse-papiers, ou Windows boîtes de dialogue communes, ou s’ils utilisent des fonctionnalités système telles que les fonctionnalités de glisser-déplacer.Windows Forms apps must be single-threaded if they communicate with Windows system components such as the Clipboard or Windows common dialog boxes, or if they use system features such as drag-and-drop functionality. Le modèle d’Application de Windows Forms pour c# ajoute automatiquement le STAThreadAttribute attribut aux projets c#.The Windows Forms Application template for C# automatically adds the STAThreadAttribute attribute to C# projects. Étant donné que le modèle de thread unique cloisonné est la valeur par défaut pour Visual Basic, il n’est pas nécessaire pour l’attribut.Because the single-threaded apartment model is the default for Visual Basic, there is no need for the attribute.

  • Vous développez une application c# qui appelle une bibliothèque Visual Basic, qui, à son tour, s’appuie sur COM interop.You're developing a C# app that calls a Visual Basic library, which, in turn, relies on COM interop. Étant donné que le modèle de thread unique 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.Because the single-threaded apartment model is the default for Visual Basic, you should change your app's threading model to single-threaded by using the STAThreadAttribute attribute.

  • Votre application effectue des appels aux composants COM qui utilisent le modèle de thread unique cloisonné.Your application makes calls to COM components that use the single-threaded apartment model.

Constructeurs

STAThreadAttribute() STAThreadAttribute() STAThreadAttribute() STAThreadAttribute()

Initialise une nouvelle instance de la classe STAThreadAttribute.Initializes a new instance of the STAThreadAttribute class.

Méthodes

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() 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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)

Implémentations d’interfaces explicites

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _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.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Propriétés

TypeId TypeId TypeId TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

S’applique à

Voir aussi