CriticalHandle.ReleaseHandle Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 .