Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
In .NET implementeren klassen die eigenaar zijn van onbeheerde resources meestal de IDisposable interface om een mechanisme te bieden voor het vrijgeven van onbeheerde resources synchroon. In sommige gevallen moeten ze echter een asynchroon mechanisme bieden voor het vrijgeven van niet-beheerde resources naast (of in plaats van) de synchrone. Door een dergelijk mechanisme te bieden, kan de consument resourcesintensieve verwijderingsbewerkingen uitvoeren zonder de hoofdthread van een GUI-toepassing gedurende lange tijd te blokkeren.
De IAsyncDisposable.DisposeAsync methode van deze interface retourneert een ValueTask die de asynchrone verwijderingsbewerking vertegenwoordigt. Klassen die eigenaar zijn van onbeheerde resources implementeren deze methode en de consument van deze klassen roept deze methode aan op een object wanneer deze niet meer nodig is.
De asynchrone methoden worden gebruikt in combinatie met de async trefwoorden en await trefwoorden in C# en Visual Basic. Zie het asynchrone programmeermodel van Task in C# of Asynchroon programmeren met Async en Await (Visual Basic) voor meer informatie.
Een object gebruiken dat IAsyncDisposable implementeert
Als uw toepassing gebruikmaakt van een object dat het IAsyncDisposable implementeert, moet u de DisposeAsync van het object aanroepen wanneer u klaar bent met het gebruik ervan. Als u wilt controleren of resources worden vrijgegeven, zelfs in geval van een uitzondering, plaatst u de code die het IAsyncDisposable object gebruikt in de using-instructie (vanaf versie 8.0) of roept u de DisposeAsync methode aan binnen een finally component van de try/finally instructie. Voor meer informatie over het try/finally-patroon, zie try-finally (C#) of Try...Catch...Finally Statement (Visual Basic).
IAsyncDisposable implementeren
U kunt in de volgende situaties implementeren IAsyncDisposable :
- Bij het ontwikkelen van een asynchrone enumerator die eigenaar is van onbeheerde resources. Asynchrone enumerators worden gebruikt met de functie C# 8.0 asynchrone streams. Zie zelfstudie: Asynchrone streams genereren en gebruiken met C# 8.0 en .NET Core 3.0 voor meer informatie over asynchrone streams.
- Wanneer uw klasse eigenaar is van onbeheerde resources en deze vrijgeeft, is een resource-intensieve I/O-bewerking vereist, zoals het leegmaken van de inhoud van een tussenliggende buffer in een bestand of het verzenden van een pakket via een netwerk om een verbinding te sluiten.
Gebruik de DisposeAsync methode om de benodigde opschoning uit te voeren nadat u de niet-beheerde resources hebt gebruikt, zoals het vrijmaken, vrijgeven of opnieuw instellen van de onbeheerde resources. Zie Een DisposeAsync-methode implementeren voor meer informatie.