CriticalHandle.ReleaseHandle Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt overschreven in een afgeleide klasse, voert u de code uit die is vereist om de ingang vrij te maken.
protected:
abstract bool ReleaseHandle();
protected abstract bool ReleaseHandle();
abstract member ReleaseHandle : unit -> bool
Protected MustOverride Function ReleaseHandle () As Boolean
Retouren
true als de ingang is vrijgegeven; anders, in het geval van een catastrofale fout, false. In dit geval wordt een releaseHandleFailed Managed Debugging Assistant gegenereerd.
Opmerkingen
De ReleaseHandle methode wordt gegarandeerd slechts één keer aangeroepen, mits u de juiste synchronisatiemechanismen gebruikt om ervoor te zorgen dat slechts één aanroep naar de Close of Dispose methode wordt uitgevoerd. De ReleaseHandle methode wordt niet aangeroepen als de IsInvalid of IsClosed eigenschap is true. Implementeer deze methode in uw CriticalHandle afgeleide klassen om code uit te voeren die nodig is om de ingang vrij te maken. Omdat een van de functies CriticalHandle is om het voorkomen van resourcelekken te garanderen, mag de code in uw implementatie ReleaseHandle nooit mislukken. De garbagecollector roept ReleaseHandle aan nadat normale finalizers zijn uitgevoerd voor objecten die tegelijkertijd garbagecollection zijn verzameld, en garandeert dat de resources worden aangeroepen en dat deze niet worden onderbroken terwijl deze wordt uitgevoerd. Deze methode wordt voorbereid als een beperkte uitvoeringsregio (CER) tijdens de bouwtijd van exemplaren (samen met alle methoden in de statisch determineerbare aanroepgrafiek). Hoewel dit onderbrekingen van threads voorkomt, moet u er wel voor zorgen dat u geen foutpaden in uw overschreven ReleaseHandle methode introduceert. Pas het ReliabilityContractAttribute kenmerk met name toe op methoden die u aanroept ReleaseHandle. In de meeste gevallen moet deze code het volgende zijn:
ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)
Daarnaast kunt u voor eenvoudige opschoning (bijvoorbeeld het aanroepen van de Windows API CloseHandle op een bestandsgreep) de retourwaarde voor de aanroep met één platform controleren. Voor complexe opschoning hebt u mogelijk veel programmalogica en veel methode-aanroepen, waarvan sommige mogelijk mislukken. U moet ervoor zorgen dat uw programmalogica terugvalcode bevat voor elk van deze gevallen.
Als de ReleaseHandle methode om welke reden dan ook wordt geretourneerd false , wordt er een releaseHandleFailed Managed Debugging Assistant gegenereerd.