MTAThreadAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Indica che il modello di threading COM per un'applicazione è un apartment a thread multipli (MTA).
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
- Ereditarietà
- Attributi
Commenti
Applicare questo attributo al metodo del punto di ingresso (il Main()
metodo in C# e Visual Basic). Non ha alcun effetto su altri metodi. Per impostare lo stato apartment dei thread avviati nel codice, usare il Thread.SetApartmentState metodo o Thread.TrySetApartmentState prima di avviare il thread.
Nota
Per una panoramica dei modelli di threading COM, vedere Informazioni e uso dei modelli di threading COM.
I modelli di threading COM si applicano solo alle applicazioni che usano l'interoperabilità COM. Il modello di threading COM può essere impostato su apartment a thread singolo o apartment multithreading. Il thread dell'applicazione viene inizializzato solo per l'interoperabilità COM se il thread effettua effettivamente una chiamata a un componente COM. Se l'interoperabilità COM non viene utilizzata, il thread non viene inizializzato e l'attributo MTAThreadAttribute , se presente, non ha alcun effetto.
A partire da .NET Framework versione 2.0, il modello di threading predefinito per l'interoperabilità COM dipende dal linguaggio in cui si sta sviluppando l'applicazione, come illustrato nella tabella seguente.
Linguaggio | Modello apartment COM |
---|---|
C# | Appartamento multithreading |
C++ | Appartamento multithreading |
Visual Basic | Apartment a thread singolo |
Per modificare queste impostazioni predefinite, usare l'attributo MTAThreadAttribute per impostare il modello di threading per l'applicazione oppure chiamare il Thread.SetApartmentState metodo o Thread.TrySetApartmentState prima di avviare il thread per impostare il modello di threading per un determinato thread. In C++, è anche possibile usare l'opzione del linker /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) per specificare il modello apartment.
Alcuni dei casi in cui si vuole usare l'attributo MTAThreadAttribute per impostare in modo esplicito il modello di threading su apartment multithreading includono quanto segue:
Si sta sviluppando un'app Visual Basic che chiama a una libreria C# che a sua volta si basa sull'interoperabilità COM. Poiché il modello apartment multithreading è l'impostazione predefinita per C#, devi modificare il modello di threading dell'app in multithreading usando l'attributo MTAThreadAttribute .
L'applicazione effettua chiamate ai componenti COM che usano il modello apartment multithreading.
Costruttori
MTAThreadAttribute() |
Inizializza una nuova istanza della classe MTAThreadAttribute. |
Proprietà
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsDefaultAttribute() |
In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
Match(Object) |
Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |