Sdílet prostřednictvím


CriticalHandle.ReleaseHandle Metoda

Definice

Při přepsání v odvozené třídě spustí kód potřebný k uvolnění popisovače.

protected:
 abstract bool ReleaseHandle();
protected abstract bool ReleaseHandle();
abstract member ReleaseHandle : unit -> bool
Protected MustOverride Function ReleaseHandle () As Boolean

Návraty

true je-li rukojeť úspěšně uvolněna; jinak v případě katastrofického selhání false. V tomto případě vygeneruje pomocníka pro spravované ladění releaseHandleFailed .

Poznámky

Za ReleaseHandle předpokladu, že používáte správné synchronizační mechanismy, je zaručeno, že metoda bude volána pouze jednou, aby se zajistilo, že se provede pouze jedno volání Close metody Dispose . Metoda ReleaseHandle nebude volána, pokud IsInvalid je nebo IsClosed vlastnost .true Implementujte tuto metodu do odvozených CriticalHandle tříd, aby se spustil jakýkoli kód, který je nutný k uvolnění popisovače. Protože jednou z funkcí je zaručit prevenci úniků CriticalHandle prostředků, kód ve vaší implementaci ReleaseHandle nesmí nikdy selhat. Volání ReleaseHandle uvolňování paměti po normálních finalizačních metodách byly spuštěny pro objekty, které byly uvolněny z paměti současně, a zaručuje, že prostředky ho vyvolat a že se během probíhajícího dokončení nepřeruší. Tato metoda bude připravena jako oblast omezeného provádění (CER) v době výstavby instance (společně se všemi metodami v staticky determinovatelném grafu volání). I když to brání přerušení vlákna, musíte být stále opatrní, abyste v přepsané ReleaseHandle metodě nezaveďte žádné cesty selhání. Konkrétně použijte ReliabilityContractAttribute atribut na všechny metody, které voláte z ReleaseHandle. Ve většině případů by tento kód měl být:

ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)

Kromě toho můžete při jednoduchém vyčištění (například volání rozhraní API CloseHandle systému Windows na popisovači souboru) zkontrolovat návratovou hodnotu volání volání vyvolání jedné platformy. Pro komplexní vyčištění můžete mít spoustu logiky programu a mnoho volání metod, z nichž některé můžou selhat. Musíte zajistit, aby logika programu pro každý z těchto případů měl záložní kód.

Pokud metoda ReleaseHandle z nějakého důvodu vrátí false , vygeneruje pomocníka pro ladění spravovaného ladění releaseHandleFailed .

Platí pro

Viz také