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 è apartment multithreading (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 metodo Main() 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.
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 applicazione viene inizializzato solo per l'interoperabilità COM se il thread esegue 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.
Il modello di threading predefinito per l'interoperabilità COM dipende dal linguaggio in cui si sta sviluppando l'applicazione, come illustrato nella tabella seguente.
| Lingua | Modello di 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 thread specifico. In C++, è anche possibile usare l'opzione del linker /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) per specificare il modello apartment.
Usare l'attributo MTAThreadAttribute per impostare in modo esplicito il modello di threading su apartment multithreading nei casi seguenti:
- 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#, è consigliabile 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
| Nome | Descrizione |
|---|---|
| MTAThreadAttribute() |
Inizializza una nuova istanza della classe MTAThreadAttribute. |
Proprietà
| Nome | Descrizione |
|---|---|
| TypeId |
Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute) |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| GetHashCode() |
Restituisce il codice hash per questa istanza. (Ereditato da Attribute) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsDefaultAttribute() |
Quando sottoposto a 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 è uguale a un oggetto specificato. (Ereditato da Attribute) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| _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 per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per 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 alle proprietà e ai metodi esposti da un oggetto . (Ereditato da Attribute) |