MTAThreadAttribute MTAThreadAttribute MTAThreadAttribute MTAThreadAttribute Class

Définition

Indique que le modèle de thread COM d'une application est un modèle MTA (MultiThreaded Apartment).Indicates that the COM threading model for an application is multithreaded apartment (MTA).

public ref class MTAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MTAThreadAttribute : Attribute
type MTAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class MTAThreadAttribute
Inherits Attribute
Héritage
MTAThreadAttributeMTAThreadAttributeMTAThreadAttributeMTAThreadAttribute
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' MTAThreadAttribute attribut, s’il est présent, n’a aucun effet.If COM interop is not used, then the thread is not initialized, and the MTAThreadAttribute 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 MTAThreadAttribute 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 MTAThreadAttribute 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 (définir l’attribut de thread CLR) pour spécifier le modèle cloisonné.In C++, you can also use the /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) linker option to specify the apartment model.

Voici quelques-uns des cas dans lesquels vous souhaitez utiliser MTAThreadAttribute l’attribut pour définir explicitement le modèle de thread sur un cloisonnement multithread:Some of the cases in which you want to use the MTAThreadAttribute attribute to explicitly set the threading model to multithreaded apartment include the following:

  • Vous développez une application Visual Basic qui appelle une C# bibliothèque qui, à son tour, s’appuie sur COM Interop.You're developing a Visual Basic app that calls to a C# library that in turn relies on COM interop. Étant donné que le modèle multithread cloisonné est la valeur par C#défaut pour, vous devez modifier le modèle de thread de votre application en multithread à l' MTAThreadAttribute aide de l’attribut.Because the multithreaded apartment model is the default for C#, you should change your app's threading model to multithreaded by using the MTAThreadAttribute attribute.

  • Votre application effectue des appels aux composants COM qui utilisent le modèle multithread cloisonné.Your application makes calls to COM components that use the multithreaded apartment model.

Constructeurs

MTAThreadAttribute() MTAThreadAttribute() MTAThreadAttribute() MTAThreadAttribute()

Initialise une nouvelle instance de la classe MTAThreadAttribute.Initializes a new instance of the MTAThreadAttribute 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