Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
In .NET implementieren Klassen, die nicht verwaltete Ressourcen besitzen, in der Regel die IDisposable Schnittstelle, um einen Mechanismus zum synchronen Freigeben nicht verwalteter Ressourcen bereitzustellen. In einigen Fällen müssen sie jedoch einen asynchronen Mechanismus zum Freigeben nicht verwalteter Ressourcen zusätzlich zu (oder anstelle) des synchronen Mechanismus bereitstellen. Durch die Bereitstellung eines solchen Mechanismus kann der Verbraucher ressourcenintensive Dispose-Vorgänge ausführen, ohne den Hauptthread einer GUI-Anwendung für längere Zeit zu blockieren.
Die IAsyncDisposable.DisposeAsync-Methode dieser Schnittstelle gibt eine ValueTask zurück, die den asynchronen Löschvorgang darstellt. Klassen, die nicht verwaltete Ressourcen besitzen, implementieren diese Methode, und der Consumer dieser Klassen ruft diese Methode für ein Objekt auf, wenn sie nicht mehr benötigt wird.
Die asynchronen Methoden werden in Verbindung mit den async
Schlüsselwörtern await
in C# und Visual Basic verwendet. Weitere Informationen finden Sie unter The Task asynchronous programming model in C# or Asynchronous Programming with Async and Await (Visual Basic).
Verwenden eines Objekts, das IAsyncDisposable implementiert
Wenn Ihre Anwendung ein Objekt verwendet, das IAsyncDisposable
implementiert, sollten Sie die Implementierung des Objekts DisposeAsync aufrufen, wenn Sie es nicht mehr benötigen. Um sicherzustellen, dass Ressourcen auch bei einer Ausnahme freigegeben werden, fügen Sie den Code, der das IAsyncDisposable
Objekt verwendet, in die using-Anweisung (in C# ab Version 8.0) ein, oder rufen Sie die DisposeAsync Methode in einer finally
Klausel der try
/finally
Anweisung auf. Weitere Informationen zum try
/finally
Muster finden Sie unter try-finally (C#) oder Try...Catch...Finally-Anweisung (Visual Basic).
Implementieren von IAsyncDisposable
Sie können in den folgenden Situationen implementieren IAsyncDisposable
:
- Beim Entwickeln eines asynchronen Enumerators, der nicht verwaltete Ressourcen besitzt. Asynchrone Enumeratoren werden mit dem asynchronen Streams-Feature von C# 8.0 verwendet. Weitere Informationen zu asynchronen Streams finden Sie im Lernprogramm: Generieren und Nutzen asynchroner Datenströme mit C# 8.0 und .NET Core 3.0.
- Wenn Ihre Klasse nicht verwaltete Ressourcen besitzt und diese freigeben, ist ein ressourcenintensiver E/A-Vorgang erforderlich, z. B. das Leeren des Inhalts eines Zwischenpuffers in eine Datei oder das Senden eines Pakets über ein Netzwerk, um eine Verbindung zu schließen.
Verwenden Sie die DisposeAsync Methode, um die erforderlichen Bereinigungsvorgänge auszuführen, nachdem Sie die nicht verwalteten Ressourcen verwendet haben, z. B. Freimachen, Freigeben oder Zurücksetzen der nicht verwalteten Ressourcen. Weitere Informationen finden Sie unter Implementieren einer DisposeAsync-Methode.