MTAThreadAttribute Classe

Définition

Indique que le modèle de thread COM d'une application est un modèle MTA (MultiThreaded Apartment).

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

Remarques

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

Notes

Pour obtenir une vue d’ensemble des modèles de thread com, consultez Présentation et utilisation des 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 seul thread ou un appartement multithread. Le thread d’application est initialisé uniquement pour l’interopérabilité COM si le thread effectue un appel à un composant COM. Si COM Interop n’est pas utilisé, le thread n’est pas initialisé et l’attribut MTAThreadAttribute , s’il est présent, n’a aucun effet.

À compter de la version 2.0 du .NET Framework, 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.

Langage Modèle d’appartement COM
C# Appartement multithread
C++ Appartement multithread
Visual Basic Appartement monothread

Pour modifier ces valeurs par défaut, vous utilisez l’attribut MTAThreadAttribute pour définir le modèle de thread pour l’application, ou appelez la Thread.SetApartmentState méthode ou Thread.TrySetApartmentState avant de démarrer le thread afin de définir le modèle de thread pour un thread particulier. En 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 d’appartement.

Certains des cas dans lesquels vous souhaitez utiliser l’attribut MTAThreadAttribute pour définir explicitement le modèle de thread sur l’appartement multithread sont les suivants :

  • Vous développez une application Visual Basic qui appelle une bibliothèque C# qui s’appuie à son tour sur l’interopérabilité COM. Étant donné que le modèle d’appartement multithread est la valeur par défaut pour C#, vous devez modifier le modèle de thread de votre application en multithread à l’aide de l’attribut MTAThreadAttribute .

  • Votre application effectue des appels aux composants COM qui utilisent le modèle d’appartement multithread.

Constructeurs

MTAThreadAttribute()

Initialise une nouvelle instance de la classe MTAThreadAttribute.

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)

S’applique à

Voir aussi