SuppressGCTransitionAttribute Třída

Definice

Označuje, že při volání nespravované funkce by měl být přechod uvolňování paměti vynechán.

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
Dědičnost
SuppressGCTransitionAttribute
Atributy

Poznámky

Tento atribut se ignoruje, pokud se použije na metodu bez DllImportAttribute.

Pokud náklady na přechod přesáhly dobu provádění nespravované funkce, může to přinést výhody. Pokud se však tomuto přechodu vyhnete, odeberete některé záruky, které modul runtime poskytuje prostřednictvím normálního P/Invoke. Při ukončení spravovaného modulu runtime pro vstup do nespravované funkce musí uvolňování paměti přejít z režimu spolupráce do preemptivního režimu. Úplné podrobnosti o těchto režimech najdete na adrese https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/clr-code-guide.md#2.1.8. Potlačení přechodu uvolňování paměti je pokročilý scénář a nemělo by se provádět bez úplného pochopení potenciálních důsledků.

Jedním z těchto důsledků je dopad na ladění ve smíšeném režimu. Během ladění ve smíšeném režimu není možné krokovat ani nastavit zarážky v P/Invoke, který byl označen tímto atributem. Alternativním řešením je přepnout na nativní ladění a nastavit zarážku v nativní funkci. Obecně platí, že použití tohoto atributu se nedoporučuje, pokud je ladění volání P/Invoke důležité, například procházení nativního kódu nebo diagnostika výjimky vyvolané nativním kódem.

Metoda P/Invoke, na kterou se tento atribut používá, musí mít všechny následující vlastnosti:

  • Nativní funkce se vždy spouští po triviální dobu (méně než 1 mikrosekundu).
  • Nativní funkce neprovádí blokující syscall (například žádný typ vstupně-výstupních operací).
  • Nativní funkce nevolá zpět do modulu runtime (například Reverse P/Invoke).
  • Nativní funkce nevyvolá výjimky.
  • Nativní funkce nemanipuluje se zámky ani jinými primitivy souběžnosti.

Mezi důsledky neplatného použití tohoto atributu patří:

  • Hladovění uvolňování paměti.
  • Okamžité ukončení modulu runtime.
  • Poškození dat.

Použití tohoto atributu může způsobit, že export volání P/Invoke bude vázán dříve jako vedlejší účinek volání metody kompilované JIT. EntryPointNotFoundException nebo jiné výjimky můžou být vyvoláné dříve, než když se atribut nepoužije.

Konstruktory

SuppressGCTransitionAttribute()

Konstruktor instance.

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

Type Získá z aktuální instance.

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

Platí pro