Freigeben über


MTAThreadAttribute Klasse

Definition

Gibt an, dass MTA (Multithreaded Apartment) als COM-Threadingmodell für eine Anwendung verwendet wird.

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 (die Main() Methode in C# und Visual Basic) an. Es hat keine Auswirkungen auf andere Methoden. Um den Apartmentstatus der Threads festzulegen, die Sie in Ihrem Code starten, verwenden Sie die Thread.SetApartmentState - oder Thread.TrySetApartmentState -Methode, bevor Sie den Thread starten.

Hinweis

Eine Übersicht über COM-Threadingmodelle finden Sie unter Grundlegendes und Verwenden von COM-Threadingmodellen.

COM-Threadingmodelle gelten nur für Anwendungen, die COM-Interop verwenden. Das COM-Threadingmodell kann auf Singlethread-Apartment oder Multithread-Apartment festgelegt werden. Der Anwendungsthread wird nur für COM-Interop initialisiert, wenn der Thread tatsächlich eine COM-Komponente aufruft. Wenn keine COM-Interop verwendet wird, wird der Thread nicht initialisiert, und das MTAThreadAttribute Attribut hat, sofern vorhanden, keine Auswirkung.

Ab .NET Framework Version 2.0 hängt das Standardthreadingmodell für COM-Interop von der Sprache ab, in der Sie Ihre Anwendung entwickeln, wie in der folgenden Tabelle gezeigt.

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

Um diese Standardwerte zu ändern, verwenden Sie das MTAThreadAttribute -Attribut, um das Threadingmodell für die Anwendung festzulegen, oder rufen die Thread.SetApartmentState - oder Thread.TrySetApartmentState -Methode auf, 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.

Zu den Fällen, in denen Sie das MTAThreadAttribute -Attribut verwenden möchten, um das Threadingmodell explizit auf Multithread-Apartment festzulegen, gehören die folgenden:

  • Sie entwickeln eine Visual Basic-App, die eine C#-Bibliothek aufruft, die wiederum auf COM-Interop basiert. Da das Multithread-Apartmentmodell das Standardmodell für C# ist, sollten Sie das Threadingmodell Ihrer App mithilfe des MTAThreadAttribute -Attributs in Multithreading ändern.

  • Ihre Anwendung führt Aufrufe von COM-Komponenten durch, die das Multithread-Apartmentmodell verwenden.

Konstruktoren

MTAThreadAttribute()

Initialisiert eine neue Instanz der MTAThreadAttribute-Klasse.

Eigenschaften

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

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

(Geerbt von Attribute)
GetHashCode()

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

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

_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 deren Hilfe 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)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen