MTAThreadAttribute Klasa

Definicja

Wskazuje, że model wątkowości COM dla aplikacji jest apartamentem wielowątkowym (MTA).Indicates that the COM threading model for an application is multithreaded apartment (MTA).

public ref class MTAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class MTAThreadAttribute : Attribute
public sealed class MTAThreadAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MTAThreadAttribute : Attribute
type MTAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class MTAThreadAttribute
Inherits Attribute
Dziedziczenie
MTAThreadAttribute
Atrybuty

Uwagi

Zastosuj ten atrybut do metody punktu wejścia (Metoda Main() w C# i Visual Basic).Apply this attribute to the entry point method (the Main() method in C# and Visual Basic). Nie ma ona wpływu na inne metody.It has no effect on other methods. Aby ustawić stan apartamentu wątków, które zaczynają się w kodzie, użyj metody Thread.SetApartmentState lub Thread.TrySetApartmentState przed uruchomieniem wątku.To set the apartment state of threads you start in your code, use the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread.

Uwaga

Aby zapoznać się z omówieniem modeli wątkowości COM, zobacz Opis i używanie modeli wątkowości com.For an overview of COM threading models, see Understanding and Using COM Threading Models.

Modele wątkowości COM stosują się tylko do aplikacji, które korzystają z międzyoperacyjności modelu COM.COM threading models only apply to applications that use COM interop. Model wątkowości COM może być ustawiony na Apartament jednowątkowy lub Apartament wielowątkowy.The COM threading model can be set to single-threaded apartment or multithreaded apartment. Wątek aplikacji jest inicjowany tylko dla współdziałania z modelem COM, jeśli wątek rzeczywiście wywołuje składnik COM.The application thread is only initialized for COM interop if the thread actually makes a call to a COM component. Jeśli nie jest używana usługa międzyoperacyjna modelu COM, wątek nie zostanie zainicjowany i atrybut MTAThreadAttribute, jeśli jest obecny, nie ma żadnego wpływu.If COM interop is not used, then the thread is not initialized, and the MTAThreadAttribute attribute, if it is present, has no effect.

Począwszy od .NET Framework w wersji 2,0, domyślny model wątkowości dla międzyoperacyjności modelu COM zależy od języka, w którym tworzysz aplikację, jak pokazano w poniższej tabeli.Starting with the .NET Framework version 2.0, the default threading model for COM interop depends on the language in which you are developing your application, as the following table shows.

JęzykLanguage Model Apartment COMCOM apartment model
C#C# Apartament wielowątkowyMultithreaded apartment
C++C++ Apartament wielowątkowyMultithreaded apartment
Visual BasicVisual Basic Apartament jednowątkowySingle-threaded apartment

Aby zmienić te ustawienia domyślne, Użyj atrybutu MTAThreadAttribute, aby ustawić model wątkowości dla aplikacji, lub wywołaj metodę Thread.SetApartmentState lub Thread.TrySetApartmentState przed rozpoczęciem wątku, aby ustawić model wątkowości dla określonego wątku.To change these defaults, you use the MTAThreadAttribute attribute to set the threading model for the application, or call the Thread.SetApartmentState or Thread.TrySetApartmentState method before starting the thread to set the threading model for a particular thread. W C++programie można również użyć opcji konsolidatora /CLRTHREADATTRIBUTE (ustaw atrybut wątku CLR) , aby określić model komórkowy.In C++, you can also use the /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) linker option to specify the apartment model.

Niektóre przypadki, w których chcesz użyć atrybutu MTAThreadAttribute, aby jawnie ustawić model wątkowości na Apartament wielowątkowy obejmują następujące elementy:Some of the cases in which you want to use the MTAThreadAttribute attribute to explicitly set the threading model to multithreaded apartment include the following:

  • Tworzysz aplikację Visual Basic, która wywołuje do C# biblioteki, która z kolei korzysta z międzyoperacyjności modelu com.You're developing a Visual Basic app that calls to a C# library that in turn relies on COM interop. Ponieważ model wielowątkowości wielowątkowej jest wartością domyślną dla C#, należy zmienić model wątkowości aplikacji na wielowątkowy przy użyciu atrybutu MTAThreadAttribute.Because the multithreaded apartment model is the default for C#, you should change your app's threading model to multithreaded by using the MTAThreadAttribute attribute.

  • Aplikacja wykonuje wywołania do składników COM, które korzystają z modelu Apartment wielowątkowych.Your application makes calls to COM components that use the multithreaded apartment model.

Konstruktory

MTAThreadAttribute()

Inicjuje nowe wystąpienie klasy MTAThreadAttribute.Initializes a new instance of the MTAThreadAttribute class.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.Returns a value that indicates whether this instance is equal to a specified object.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.Returns the hash code for this instance.

(Odziedziczone po Attribute)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
IsDefaultAttribute()

Gdy jest zastępowany w klasie pochodnej, wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Odziedziczone po Attribute)
Match(Object)

Gdy jest zastępowany w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest zgodne z określonym obiektem.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.Maps a set of names to a corresponding set of dispatch identifiers.

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

Pobiera informacje o typie dla obiektu, którego można użyć do uzyskania informacji o typie dla interfejsu.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też