STAThreadAttribute Třída

Definice

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
STAThreadAttribute
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)

Platí pro

Viz také