MTAThreadAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Indique que le modèle de thread COM d’une application est un 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
- Attributs
Remarques
Appliquez cet attribut à la méthode de point d’entrée (la méthode Main() en C# et Visual Basic). Elle n’a aucun effet sur d’autres méthodes. Pour définir l’état d’appartement des threads que vous démarrez dans votre code, utilisez la ou Thread.TrySetApartmentState la Thread.SetApartmentState méthode avant de démarrer le thread.
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 appartement monothread ou un appartement multithread. Le thread d’application est initialisé uniquement pour l’interopérabilité COM si le thread effectue réellement un appel à un composant COM. Si l’interopérabilité COM n’est pas utilisée, le thread n’est pas initialisé et l’attribut MTAThreadAttribute , s’il est présent, n’a aucun effet.
Le modèle de thread par défaut pour l’interopérabilité COM dépend du langage dans lequel vous développez votre application, comme le montre le tableau suivant.
| Language | Modèle d’appartement COM |
|---|---|
| C# | Appartement multithread |
| C++ | Appartement multithread |
| Visual Basic | Appartement à thread unique |
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 ou Thread.TrySetApartmentState la Thread.SetApartmentState méthode avant de démarrer le thread pour définir le modèle de thread pour un thread particulier. En C++, vous pouvez également utiliser l’option de l’éditeur de liens /CLRTHTHREADATTRIBUTE (Définir l’attribut de thread CLR) pour spécifier le modèle d’appartement.
Utilisez l’attribut pour définir explicitement le MTAThreadAttribute modèle de threading sur l’appartement multithread dans les cas 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 remplacer le modèle de thread de votre application par multithread à l’aide de l’attribut MTAThreadAttribute .
- Votre application effectue des appels aux composants COM qui utilisent le modèle d’appartement multithread.
Constructeurs
| Nom | Description |
|---|---|
| MTAThreadAttribute() |
Initialise une nouvelle instance de la classe MTAThreadAttribute. |
Propriétés
| Nom | Description |
|---|---|
| TypeId |
En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute. (Hérité de Attribute) |
Méthodes
| Nom | Description |
|---|---|
| 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 pour cette instance. (Hérité de Attribute) |
| GetType() |
Obtient la 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 de la classe dérivée. (Hérité de Attribute) |
| Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| _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 d’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 méthodes exposées par un objet. (Hérité de Attribute) |