STAThreadAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
- 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.
Note
A COM-szálmodellek áttekintését a COM szálmodellek ismertetése és használata című témakörben tekintheti meg.
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) |