SuppressGCTransitionAttribute Klass

Definition

Anger att en skräpinsamlingsövergång ska hoppas över när ett ohanterat funktionsanrop görs.

public ref class SuppressGCTransitionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class SuppressGCTransitionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type SuppressGCTransitionAttribute = class
    inherit Attribute
Public NotInheritable Class SuppressGCTransitionAttribute
Inherits Attribute
Arv
SuppressGCTransitionAttribute
Attribut

Kommentarer

Det här attributet ignoreras om det tillämpas på en metod utan DllImportAttribute.

Om du avstår från den här övergången kan det ge fördelar när kostnaden för övergången är mer än körningstiden för den ohanterade funktionen. Att undvika den här övergången tar dock bort några av de garantier som körningen ger via en normal P/Invoke. När du avslutar den hanterade körningen för att ange en ohanterad funktion måste GC övergå från samarbetsläge till förebyggande läge. Fullständig information om dessa lägen finns på https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/clr-code-guide.md#2.1.8. Att förhindra GC-övergången är ett avancerat scenario och bör inte göras utan att helt förstå potentiella konsekvenser.

En av dessa konsekvenser är en inverkan på felsökning i blandat läge. Under felsökning i blandat läge går det inte att gå in i eller ange brytpunkter i en P/Invoke som har markerats med det här attributet. En lösning är att växla till intern felsökning och ange en brytpunkt i den interna funktionen. I allmänhet rekommenderas inte användning av det här attributet om felsökning av P/Invoke är viktigt, till exempel genom att stega igenom den interna koden eller diagnostisera ett undantag som genereras från den interna koden.

P/Invoke-metoden som det här attributet tillämpas på måste ha alla följande egenskaper:

  • Intern funktion körs alltid under en minimal tid (mindre än 1 mikrosekunder).
  • Den interna funktionen utför inte ett blockerande syscall (till exempel någon typ av I/O).
  • Den inbyggda funktionen anropar inte tillbaka till körningen (till exempel Omvänd P/Anropa).
  • Intern funktion utlöser inte undantag.
  • Intern funktion manipulerar inte lås eller andra samtidighetspri primitiver.

Här är några konsekvenser av ogiltig användning av det här attributet:

  • GC svält.
  • Omedelbar körningsavslutning.
  • Skadade data.

Om du använder det här attributet kan P/Invoke-exporten bindas tidigare som en bieffekt av den anropande metod som JIT kompileras. EntryPointNotFoundException eller andra undantag kan genereras tidigare än när attributet inte tillämpas.

Konstruktorer

Name Description
SuppressGCTransitionAttribute()

Instanskonstruktor.

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)

Gäller för