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 (metoda Main() v jazyce C# a Visual Basic). Nemá žádný vliv na jiné metody. Chcete-li nastavit stav bytu vláken, které začínáte v kódu, použijte Thread.SetApartmentState před spuštěním vlákna metodu nebo Thread.TrySetApartmentState metodu.

Modely vláken modelu COM se vztahují pouze na aplikace, které používají zprostředkovatele komunikace 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 interoperabilitu modelu COM, pokud vlákno ve skutečnosti volá komponentu COM. Pokud se zprostředkovatel komunikace modelu COM nepoužívá, vlákno není inicializováno a STAThreadAttribute atribut, pokud je k dispozici, nemá žádný vliv.

Počínaje rozhraním .NET Framework verze 2.0 závisí výchozí model vláken 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
jazyk 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

Chcete-li změnit tato výchozí nastavení, pomocí STAThreadAttribute atributu nastavíte model threadingu pro aplikaci nebo zavoláte Thread.SetApartmentState metodu nebo Thread.TrySetApartmentState před spuštěním vlákna nastavíte model podprocesu 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 atribut ASPCompat direktivy @ Page na true, aby 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í nastavení modelu threadingu na jednovláknové apartmány:

  • Vyvíjíte model Windows Forms aplikaci. model Windows Forms aplikace musí být jednovláknové, pokud komunikují s Windows systémovými součástmi, jako je schránka nebo Windows společná dialogová okna, nebo pokud používají systémové funkce, jako jsou funkce přetažení. Šablona aplikace model Windows Forms pro jazyk C# automaticky přidá atribut STAThreadAttribute do projektů C#. Vzhledem k tomu, že model apartmánu s jedním vláknem je výchozím nastavením pro Visual Basic, není pro atribut potřeba.

  • Vyvíjíte aplikaci jazyka C#, která volá knihovnu Visual Basic, která zase spoléhá na zprostředkovatele komunikace modelu COM. Vzhledem k tomu, že model apartmánu s jedním vláknem je výchozím nastavením pro Visual Basic, měli byste změnit model threadingu aplikace na jednovláknový pomocí atributu STAThreadAttribute.

  • Vaše aplikace volá komponenty modelu COM, které používají model apartmánu s jedním vláknem.

Konstruktory

Name Description
STAThreadAttribute()

Inicializuje novou instanci STAThreadAttribute třídy.

Vlastnosti

Name Description
TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Name Description
Equals(Object)

Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá Type aktuální instance.

(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 pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního 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í

Name Description
_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 pro 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é