IAsyncDisposable Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen Mechanismus für die asynchrone Freigabe nicht verwalteter Ressourcen bereit.
public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
- Abgeleitet
Hinweise
In .NET implementieren Klassen, die nicht verwaltete Ressourcen besitzen, normalerweise die IDisposable Schnittstelle, um einen Mechanismus zum synchronen Freigeben nicht verwalteter Ressourcen bereitzustellen. In einigen Fällen müssen sie jedoch einen asynchronen Mechanismus bereitstellen, um nicht verwaltete Ressourcen zusätzlich zu (oder anstelle von) der synchronen Ressourcen freizugeben. Die Bereitstellung eines solchen Mechanismus ermöglicht es dem Consumer, ressourcenintensive Entsorgungsvorgänge durchzuführen, ohne den Hauptthread einer GUI-Anwendung für eine lange Zeit zu blockieren.
Die IAsyncDisposable.DisposeAsync Methode dieser Schnittstelle gibt einen ValueTask zurück, der den asynchronen Entsorgevorgang 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 und await
in C# und Visual Basic verwendet. Weitere Informationen finden Sie unter Das asynchrone Programmiermodell der Aufgabe in C# oder Asynchrone Programmierung mit Asynchron und Await (Visual Basic).
Verwenden eines Objekts, das IAsyncDisposable implementiert
Wenn Ihre Anwendung ein Objekt verwendet, das implementiert IAsyncDisposable
, sollten Sie die Implementierung des DisposeAsync Objekts aufrufen, wenn Sie es verwendet haben. Um sicherzustellen, dass Ressourcen auch im Fall 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... Fangen... Finally-Anweisung (Visual Basic).
Implementieren von IAsyncDisposable
Sie können in den folgenden Situationen implementieren IAsyncDisposable
:
Bei der Entwicklung eines asynchronen Enumerators, der nicht verwaltete Ressourcen besitzt. Asynchrone Enumeratoren werden mit dem Feature für asynchrone C# 8.0-Datenströme verwendet. Weitere Informationen zu asynchronen Streams finden Sie unter Tutorial: Generieren und Nutzen von asynchronen Streams 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 nach der Verwendung der nicht verwalteten Ressourcen erforderlichen Bereinigungen durchzuführen, z. B. das Freigeben, Freigeben oder Zurücksetzen der nicht verwalteten Ressourcen. Weitere Informationen finden Sie unter Implementieren einer DisposeAsync-Methode.
Methoden
DisposeAsync() |
Führt anwendungsspezifische Aufgaben aus, die mit dem asynchronen Freigeben, Zurückgeben oder Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. |
Erweiterungsmethoden
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguriert, wie Wartezeiten auf die Aufgaben angewandt werden, die von einem asynchronen verwerfbaren Element zurückgegeben werden. |