STAThreadAttribute Klass

Definition

Anger att COM-trådningsmodellen för ett program är entrådad lägenhet (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
Arv
STAThreadAttribute
Attribut

Kommentarer

Använd det här attributet på startpunktsmetoden (metoden Main() i C# och Visual Basic). Det har ingen effekt på andra metoder. Om du vill ange lägenhetstillståndet för trådar som du startar i koden använder Thread.SetApartmentState du metoden eller Thread.TrySetApartmentState innan du startar tråden.

Note

En översikt över COM-trådningsmodeller finns i Förstå och använda COM-trådmodeller.

COM-trådmodeller gäller endast för program som använder COM-interop. COM-trådningsmodellen kan ställas in på entrådad lägenhet eller flertrådad lägenhet. Programtråden initieras endast för COM-interop om tråden faktiskt anropar en COM-komponent. Om COM interop inte används initieras inte tråden STAThreadAttribute och attributet har ingen effekt om det finns.

Från och med .NET Framework version 2.0 beror standardtrådningsmodellen för COM interop på det språk som du utvecklar ditt program på, vilket visas i följande tabell.

Språk COM-lägenhetsmodell
C# Flertrådad lägenhet
C++ Flertrådad lägenhet
Visual Basic Entrådad lägenhet

Om du vill ändra dessa standardvärden använder STAThreadAttribute du attributet för att ange trådningsmodellen för programmet, eller anropa Thread.SetApartmentState metoden eller Thread.TrySetApartmentState innan du startar tråden för att ange trådmodellen för en viss tråd. I C++ kan du också använda alternativet /CLRTHREADATTRIBUTE-länkare för att ange lägenhetsmodellen.

ASP.NET program bör ange attributet ASPCompat för @ Page-direktivet till true för att tvinga sidan att hanteras av STA-trådpoolen.

Här är några av de fall där du vill använda STAThreadAttribute attributet för att uttryckligen ange trådningsmodellen till entrådad lägenhet:

  • Du utvecklar en Windows Forms app. Windows Forms appar måste vara enkeltrådade om de kommunicerar med Windows systemkomponenter som Urklipp eller Windows vanliga dialogrutor, eller om de använder systemfunktioner som dra och släpp-funktioner. Windows Forms-programmallen för C# lägger automatiskt till attributet STAThreadAttribute till C#-projekt. Eftersom den entrådade lägenhetsmodellen är standard för Visual Basic behöver du inte attributet.

  • Du utvecklar en C#-app som anropar ett Visual Basic bibliotek, som i sin tur förlitar sig på COM-interop. Eftersom den entrådade lägenhetsmodellen är standard för Visual Basic bör du ändra appens trådmodell till entrådad med hjälp av attributet STAThreadAttribute.

  • Ditt program anropar COM-komponenter som använder entrådad lägenhetsmodell.

Konstruktorer

Name Description
STAThreadAttribute()

Initierar en ny instans av STAThreadAttribute klassen.

Egenskaper

Name Description
TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

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

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för

Se även