System.IAsyncDisposable-Schnittstelle

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 Standard Thread einer GUI-Anwendung für längere Zeit zu blockieren.

Die IAsyncDisposable.DisposeAsync Methode dieser Schnittstelle gibt einen ValueTask , der den asynchronen Dispose-Vorgang 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 und await Schlüsselwort (keyword) 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 implementiert IAsyncDisposablewird, sollten Sie die Implementierung des DisposeAsync Objekts aufrufen, wenn Sie damit fertig sind. 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... Fangen... 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 Enumerationen werden mit dem Asynchronen Streams-Feature 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 alle erforderlichen sauber up auszuführen, nachdem die nicht verwalteten Ressourcen verwendet wurden, z. B. Freigeben, Freigeben oder Zurücksetzen der nicht verwalteten Ressourcen. Weitere Informationen finden Sie unter Implementieren einer DisposeAsync-Methode.