Sdílet prostřednictvím


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

Použijte tento atribut na metodu vstupního bodu (metodu Main() v jazyce C# a Visual Basic). Nemá žádný vliv na jiné metody. Pokud chcete nastavit stav bytu vláken, která spouštíte v kódu, použijte před spuštěním vlákna metodu Thread.SetApartmentState nebo Thread.TrySetApartmentState .

Poznámka

Přehled modelů vláken modelu COM najdete v tématu Principy a použití modelů vláken MODELU COM.

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 byt s více vlákny. Vlákno aplikace je inicializováno pouze pro zprostředkovatele COM, pokud vlákno skutečně provádí volání komponenty modelu COM. Pokud se nepoužívá zprostředkovatele com, pak 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 threadingu pro spolupráci modelu COM na jazyce, ve kterém vyvíjíte aplikaci, jak ukazuje následující tabulka.

Jazyk Model bytu COM
C# Vícevláknový byt
C++ Vícevláknový byt
Visual Basic Jednovláknový byt

Chcete-li změnit tyto výchozí hodnoty, použijte STAThreadAttribute atribut k nastavení modelu threading pro aplikaci nebo volání Thread.SetApartmentState metody nebo Thread.TrySetApartmentState před spuštěním vlákna nastavit model threading pro konkrétní vlákno. V jazyce C++ můžete také použít možnost /CLRTHREADATTRIBUTE linker k určení modelu bytu.

ASP.NET aplikace by měly nastavit ASPCompat atribut 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 pomocí atributu STAThreadAttribute explicitně nastavit model threadingu na jednovláknový byt:

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

  • Vyvíjíte aplikaci v jazyce C#, která volá knihovnu Jazyka Visual Basic, která zase spoléhá na zprostředkovatele komunikace 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áknění vaší aplikace na jednovláknový pomocí atributu STAThreadAttribute .

  • Aplikace volá komponenty modelu COM, které používají jednovláknový model bytu.

Konstruktory

STAThreadAttribute()

Inicializuje novou instanci STAThreadAttribute třídy.

Vlastnosti

TypeId

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

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

Získá aktuální Type instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance 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á označuje, zda se tato instance rovná zadanému objektu.

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

Vytvoří mělkou kopii aktuálního Objectsouboru .

(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 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é