Freigeben über


MTAThreadAttribute Klasse

Definition

Gibt an, dass das COM-Threadingmodell für eine Anwendung Multithreaded Apartment (MTA) ist.

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
Vererbung
MTAThreadAttribute
Attribute

Hinweise

Wenden Sie dieses Attribut auf die Einstiegspunktmethode an (die methode Main() in C# und Visual Basic). Sie hat keine Auswirkungen auf andere Methoden. Wenn Sie den Apartmentstatus von Threads festlegen möchten, die Sie im Code starten, verwenden Sie die Thread.SetApartmentState Oder-Methode Thread.TrySetApartmentState , bevor Sie den Thread starten.

COM-Threadingmodelle gelten nur für Anwendungen, die COM-Interoperabilität verwenden. Das COM-Threadingmodell kann auf singlethreaded apartment oder multithreaded apartment festgelegt werden. Der Anwendungsthread wird nur für COM-Interoperabilität initialisiert, wenn der Thread tatsächlich einen Aufruf einer COM-Komponente vorgibt. Wenn die COM-Interoperabilität nicht verwendet wird, wird der Thread nicht initialisiert, und das MTAThreadAttribute Attribut hat, sofern vorhanden, keine Auswirkung.

Das Standardthreadingmodell für COM-Interoperabilität hängt von der Sprache ab, in der Sie Ihre Anwendung entwickeln, wie in der folgenden Tabelle dargestellt.

Sprache COM-Apartmentmodell
C# Multithread-Wohnung
C++ Multithread-Wohnung
Visual Basic Singlethread-Wohnung

Um diese Standardwerte zu ändern, verwenden Sie das MTAThreadAttribute Attribut, um das Threadingmodell für die Anwendung festzulegen, oder rufen Sie die Thread.SetApartmentState Methode auf Thread.TrySetApartmentState , bevor Sie den Thread starten, um das Threadingmodell für einen bestimmten Thread festzulegen. In C++ können Sie auch die Linkeroption /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) verwenden, um das Apartmentmodell anzugeben.

Verwenden Sie das MTAThreadAttribute Attribut, um das Threadingmodell explizit auf Multithread-Apartment in den folgenden Fällen festzulegen:

  • Sie entwickeln eine Visual Basic-App, die eine C#-Bibliothek aufruft, die wiederum auf COM-Interoperabilität basiert. Da das Multithread-Apartmentmodell die Standardeinstellung für C# ist, sollten Sie das Threadingmodell Ihrer App mithilfe des MTAThreadAttribute Attributs in Multithreads ändern.
  • Ihre Anwendung führt Aufrufe an COM-Komponenten durch, die das Multithread-Apartmentmodell verwenden.

Konstruktoren

Name Beschreibung
MTAThreadAttribute()

Initialisiert eine neue Instanz der MTAThreadAttribute-Klasse.

Eigenschaften

Name Beschreibung
TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen