MTAThreadAttribute Klasa

Definicja

Wskazuje, że model wątkowy MODELU COM dla aplikacji jest apartamentem wielowątkowym (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
Dziedziczenie
MTAThreadAttribute
Atrybuty

Uwagi

Zastosuj ten atrybut do metody punktu wejścia ( Main() metody w językach C# i Visual Basic). Nie ma wpływu na inne metody. Aby ustawić stan mieszkania wątków uruchamianych w kodzie, użyj Thread.SetApartmentState metody or Thread.TrySetApartmentState przed rozpoczęciem wątku.

Uwaga

Aby zapoznać się z omówieniem modeli wątków MODELU COM, zobacz Understanding and Using COM Threading Models (Omówienie modeli wątkowania modelu COM i korzystanie z tych modeli).

Modele wątkowania MODELU COM mają zastosowanie tylko do aplikacji korzystających z międzyoperacyjnego modelu COM. Model wątkowania COM można ustawić na jednowątkowy apartament lub apartament wielowątkowy. Wątek aplikacji jest inicjowany tylko dla międzyoperacyjnego modelu COM, jeśli wątek rzeczywiście wykonuje wywołanie składnika COM. Jeśli międzyoperacyjna com nie jest używana, wątek nie jest inicjowany, a MTAThreadAttribute atrybut, jeśli jest obecny, nie ma żadnego efektu.

Począwszy od .NET Framework w wersji 2.0, domyślny model wątków dla międzyoperacyjności modelu COM zależy od języka, w którym tworzysz aplikację, jak pokazano w poniższej tabeli.

Język Model apartamentów COM
C# Apartament wielowątkowy
C++ Apartament wielowątkowy
Visual Basic Jednowątkowy apartament

Aby zmienić te wartości domyślne, należy użyć atrybutu MTAThreadAttribute , aby ustawić model wątków dla aplikacji lub wywołać Thread.SetApartmentState metodę lub Thread.TrySetApartmentState przed uruchomieniem wątku, aby ustawić model wątkowania dla określonego wątku. W języku C++można również użyć opcji konsolidatora /CLRTHREADATTRIBUTE (Ustaw atrybut wątku CLR) w celu określenia modelu mieszkania.

Niektóre przypadki, w których chcesz użyć atrybutu MTAThreadAttribute do jawnego ustawienia modelu wątkowania na apartament wielowątkowy, obejmują następujące elementy:

  • Tworzysz aplikację języka Visual Basic, która wywołuje bibliotekę języka C#, która z kolei korzysta z międzyoperacyjności modelu COM. Ponieważ model apartamentów wielowątkowych jest domyślny dla języka C#, należy zmienić model wątków aplikacji na wielowątkowy przy użyciu atrybutu MTAThreadAttribute .

  • Aplikacja wykonuje wywołania składników COM korzystających z wielowątkowego modelu apartamentów.

Konstruktory

MTAThreadAttribute()

Inicjuje nowe wystąpienie klasy MTAThreadAttribute.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też