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 Main() (méthode C# dans et Visual Basic).Apply this attribute to the entry point method (the Main() method in C# and Visual Basic). Elle 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 Thread.SetApartmentState , Thread.TrySetApartmentState utilisez la méthode ou 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 obtenir une vue d’ensemble des modèles de threads COM, consultez présentation et utilisation des modèles de thread com.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 sur cloisonnement monothread ou sur cloisonnement multithread.The COM threading model can be set to single-threaded apartment or multithreaded apartment. Le thread d’application est initialisé uniquement pour COM Interop 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 l' STAThreadAttribute attribut, s’il est présent, 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.

À partir de la version .NET Framework 2,0, le modèle de thread par défaut pour COM Interop dépend du langage dans lequel vous développez votre application, comme le montre 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 COM ApartmentCOM apartment model
C#C# Multithread cloisonnéMultithreaded apartment
C++C++ Multithread cloisonnéMultithreaded apartment
Visual BasicVisual Basic Cloisonnement à thread uniqueSingle-threaded apartment

Pour modifier ces valeurs par défaut, vous utilisez STAThreadAttribute l’attribut pour définir le modèle de thread de l’application, ou appelez Thread.SetApartmentState la Thread.TrySetApartmentState méthode ou avant de démarrer le thread pour définir le modèle de thread d’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. Dans C++, vous pouvez également utiliser l’option de l’éditeur de liens /CLRTHREADATTRIBUTE pour spécifier le modèle cloisonné.In C++, you can also use the /CLRTHREADATTRIBUTE linker option to specify the apartment model.

Les applications ASP.net doivent définir ASPCompat l’attribut de la directive @ page sur true pour forcer la maintenance de la page 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 quelques-uns des cas dans lesquels vous souhaiterez utiliser l' STAThreadAttribute attribut pour définir explicitement le modèle de thread sur un cloisonnement à thread unique: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. Windows Forms applications doivent être à thread unique s’ils communiquent avec des composants système Windows, tels que le presse-papiers ou des boîtes de dialogue communes Windows, ou s’ils utilisent des fonctionnalités système telles que la fonctionnalité 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 Windows Forms C# pour ajoute automatiquement STAThreadAttribute l’attribut C# aux projets.The Windows Forms Application template for C# automatically adds the STAThreadAttribute attribute to C# projects. Étant donné que le modèle à thread unique cloisonné est la valeur par défaut pour Visual Basic, l’attribut n’est pas nécessaire.Because the single-threaded apartment model is the default for Visual Basic, there is no need for the attribute.

  • Vous développez une C# application 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 à thread unique est la valeur par défaut pour Visual Basic, vous devez modifier le modèle de thread de votre application en un thread unique à STAThreadAttribute l’aide de l’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 à 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