STAThreadAttribute Osztály

Definíció

Azt jelzi, hogy egy alkalmazás COM-szálazási modellje egyszálas lakás (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
Öröklődés
STAThreadAttribute
Attribútumok

Megjegyzések

Alkalmazza ezt az attribútumot a belépési pont metódusára (a Main() metódusra C# és Visual Basic). Nincs hatása más módszerekre. A kódban kezdődő szálak lakásállapotának beállításához használja a Thread.SetApartmentState metódust a Thread.TrySetApartmentState szál indítása előtt.

A COM-szálmodellek csak a COM-interopt használó alkalmazásokra vonatkoznak. A COM menetmodell egyszálas lakásra vagy többszálú lakásra állítható be. Az alkalmazásszál csak akkor inicializálódik a COM-interophoz, ha a szál valójában egy COM-összetevőre irányuló hívást kezdeményez. Ha a COM-interop nem használatos, akkor a szál nincs inicializálva, és az STAThreadAttribute attribútumnak, ha van, nincs hatása.

Az .NET Framework 2.0-s verziójától kezdve a COM interop alapértelmezett szálmodellje attól függ, hogy milyen nyelven fejleszti az alkalmazást, ahogy az alábbi táblázat is mutatja.

Nyelv COM apartmanmodell
C# Többszálas apartman
C++ Többszálas apartman
Visual Basic Egyszálas apartman

Az alapértelmezett beállítások módosításához az STAThreadAttribute attribútum használatával állítsa be az alkalmazás szálmodellét, vagy hívja meg a Thread.SetApartmentStateThread.TrySetApartmentState metódust, mielőtt elindítja a szálat egy adott szál szálmodelljének beállításához. A C++-ban a /CLRTHREADATTRIBUTE linker kapcsolóval is megadhatja a lakásmodellt.

ASP.NET alkalmazásoknak a ASPCompat irányelv attribútumát true értékre kell állítaniuk, hogy az sta-szálkészlet szervizelje az oldalt.

Íme néhány eset, amikor az STAThreadAttribute attribútum használatával explicit módon egyszálas lakásra szeretné beállítani a szálmodellt:

  • Egy Windows Forms-alkalmazást fejleszt. Windows Forms alkalmazásoknak egyszálasnak kell lenniük, ha kommunikálnak Windows rendszerösszetevőkkel, például a vágólaplal vagy Windows gyakori párbeszédpanelekkel, vagy ha olyan rendszerfunkciókat használnak, mint a húzási funkció. A C# Windows Forms alkalmazássablonja automatikusan hozzáadja a STAThreadAttribute attribútumot a C#-projektekhez. Mivel az egyszálas apartmanmodell az alapértelmezett Visual Basic, nincs szükség az attribútumra.

  • Olyan C#-alkalmazást fejleszt, amely egy Visual Basic könyvtárat hív meg, amely viszont a COM-interopra támaszkodik. Mivel az egyszálas apartmanmodell az alapértelmezett Visual Basic, a STAThreadAttribute attribútum használatával módosítsa az alkalmazás szálmodelljét egyszálasra.

  • Az alkalmazás az egyszálú lakásmodellt használó COM-összetevőkhöz indít hívásokat.

Konstruktorok

Name Description
STAThreadAttribute()

Inicializálja a STAThreadAttribute osztály új példányát.

Tulajdonságok

Name Description
TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még