STAThreadAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Označuje, že model vláken modelu COM pro aplikaci je jednovláknový byt (STA).
public ref class STAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class STAThreadAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class STAThreadAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type STAThreadAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type STAThreadAttribute = class
inherit Attribute
Public NotInheritable Class STAThreadAttribute
Inherits Attribute
- Dědičnost
- Atributy
Poznámky
Tento atribut použijte u metody vstupního bodu (Main()
metoda v jazyce C# a Visual Basic). Nemá žádný vliv na jiné metody. Pokud chcete nastavit stav vláken, které začnete v kódu, použijte Thread.SetApartmentState před zahájením vlákna metodu nebo Thread.TrySetApartmentState metodu.
Poznámka
Přehled modelů vláken modelu COM najdete v tématu Principy a používání modelů vláken MODELU COM.
Modely vláken modelu COM se vztahují pouze na aplikace, které používají interop modelu COM. Model vláken MODELU COM lze nastavit na jednovláknový byt nebo vícevláknový byt. Vlákno aplikace je inicializováno pouze pro interop modelu COM, pokud vlákno skutečně volá komponentu COM. Pokud se nepoužívá interop modelu COM, vlákno není inicializováno a STAThreadAttribute atribut, pokud je k dispozici, nemá žádný vliv.
Počínaje verzí .NET Framework verze 2.0 závisí výchozí model pro spolupráci modelu COM na jazyce, ve kterém vyvíjíte aplikaci, jak ukazuje následující tabulka.
Jazyk | Model bytu modelu COM |
---|---|
C# | Apartmán s více vlákny |
C++ | Apartmán s více vlákny |
Visual Basic | Apartmán s jedním vláknem |
Pokud chcete tyto výchozí hodnoty změnit, pomocí atributu STAThreadAttribute nastavíte model vláken pro aplikaci nebo zavoláte metodu Thread.SetApartmentState nebo Thread.TrySetApartmentState před spuštěním vlákna nastavíte model vláken pro konkrétní vlákno. V jazyce C++ můžete také použít možnost linkeru /CLRTHREADATTRIBUTE k určení modelu bytu.
ASP.NET aplikace by měly nastavit ASPCompat
atribut direktivy @ Page tak, aby true
byla stránka obsluhována fondem vláken STA.
Tady jsou některé případy, ve kterých budete chtít atribut použít STAThreadAttribute k explicitnímu nastavení modelu vláken na jednovláknový byt:
Vyvíjíte model Windows Forms aplikaci. model Windows Forms aplikace musí být jednovláknové, pokud komunikují se systémovými komponentami Windows, jako je schránka nebo Windows běžné dialogová okna, nebo pokud používají systémové funkce, jako jsou funkce přetažení a přetažení. Šablona aplikace model Windows Forms pro C# automaticky přidá STAThreadAttribute atribut do projektů jazyka C#. Vzhledem k tomu, že model bytu s jedním vláknem je výchozím nastavením pro Visual Basic, není potřeba atributu.
Vyvíjíte aplikaci jazyka C#, která volá knihovnu Visual Basic, která se zase spoléhá na interoperabilitu modelu COM. Vzhledem k tomu, že model bytu s jedním vláknem je výchozí pro Visual Basic, měli byste změnit model vláknování aplikace na jednovláknové pomocí atributuSTAThreadAttribute.
Vaše aplikace volá komponenty modelu COM, které používají model bytu s jedním vláknem.
Konstruktory
STAThreadAttribute() |
Inicializuje novou instanci STAThreadAttribute třídy. |
Vlastnosti
TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
Metody
Equals(Object) |
Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
GetHashCode() |
Vrátí hodnotu hash pro tuto instanci. (Zděděno od Attribute) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy. (Zděděno od Attribute) |
Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu rozhraní. (Zděděno od Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od Attribute) |