IAsyncDisposable Schnittstelle

Definition

Stellt einen Mechanismus für die asynchrone Freigabe nicht verwalteter Ressourcen bereit.Provides a mechanism for releasing unmanaged resources asynchronously.

public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
Abgeleitet

Hinweise

In .NET implementieren Klassen, die nicht verwaltete Ressourcen besitzen, Normal IDisposable erweise die-Schnittstelle, um einen Mechanismus zur synchronen Freigabe nicht verwalteter Ressourcen bereitzustellen.In .NET, classes that own unmanaged resources usually implement the IDisposable interface to provide a mechanism for releasing unmanaged resources synchronously. In einigen Fällen müssen Sie jedoch einen asynchronen Mechanismus bereitstellen, um nicht verwaltete Ressourcen zusätzlich zu (oder anstelle von) dem synchronen freizugeben.However, in some cases they need to provide an asynchronous mechanism for releasing unmanaged resources in addition to (or instead of) the synchronous one. Durch die Bereitstellung eines solchen Mechanismus kann der Consumer ressourcenintensive Löschvorgänge ausführen, ohne dass der Haupt Thread einer GUI-Anwendung lange Zeit blockiert wird.Providing such a mechanism enables the consumer to perform resource-intensive dispose operations without blocking the main thread of a GUI application for a long time.

Die IAsyncDisposable.DisposeAsync -Methode dieser Schnittstelle gibt ValueTask einen zurück, der den asynchronen Löschvorgang darstellt.The IAsyncDisposable.DisposeAsync method of this interface returns a ValueTask that represents the asynchronous dispose operation. Klassen, die nicht verwaltete Ressourcen besitzen, implementieren diese Methode, und der Consumer dieser Klassen ruft diese Methode für ein Objekt auf, wenn es nicht mehr benötigt wird.Classes that own unmanaged resources implement this method, and the consumer of these classes calls this method on an object when it is no longer needed.

Die Async-Methoden werden in Verbindung mit den async Schlüssel await Wörtern und C# in und Visual Basic verwendet.The async methods are used in conjunction with the async and await keywords in C# and Visual Basic. Weitere Informationen finden Sie unter dem Task "asynchrones Programmiermodell C# " in oder der asynchronen Programmierung mit Async und warten (Visual Basic).For more insformation, see The Task asynchronous programming model in C# or Asynchronous Programming with Async and Await (Visual Basic).

Verwenden eines Objekts, das iasyncverwerfimplementiertUsing an object that implements IAsyncDisposable

Wenn die Anwendung ein Objekt verwendet, das IAsyncDisposableimplementiert, sollten Sie die-Implementierung DisposeAsync des Objekts nach Abschluss der Verwendung von abrufen.If your application uses an object that implements IAsyncDisposable, you should call the object's DisposeAsync implementation when you are finished using it. Um sicherzustellen, dass Ressourcen auch im Falle einer Ausnahme freigegeben werden, DisposeAsync müssen Sie die finally -Methode in try einer-Klausel der / finally -Anweisung abrufen.To make sure resources are released even in case of an exception, call the DisposeAsync method inside a finally clause of the try/finally statement. Weitere Informationen try / C#zum Muster finden Sie unter try-endlich () oder try... finally Catch... Abschließend-Anweisung (Visual Basic).For more information about the try/finally pattern, see try-finally (C#) or Try...Catch...Finally Statement (Visual Basic).

Implementieren von iasyncverwerfImplementing IAsyncDisposable

Sie können in IAsyncDisposable den folgenden Situationen implementieren:You might implement IAsyncDisposable in the following situations:

  • Wenn Sie einen asynchronen Enumerator entwickeln, der nicht verwaltete Ressourcen besitzt.When developing an asynchronous enumerator that owns unmanaged resources. Asynchrone Enumeratoren werden mit der C# 8,0 Async Streams-Funktion verwendet.Asynchronous enumerators are used with the C# 8.0 async streams feature. Weitere Informationen zu Async-Streams finden Sie unter Tutorial: Generieren und verwenden Sie asynchrone C# Streams mit 8,0 und .netCore 3,0.For more information about async streams, see Tutorial: Generate and consume async streams using C# 8.0 and .NET Core 3.0.

  • Wenn Ihre Klasse nicht verwaltete Ressourcen besitzt und diese freigibt, ist ein ressourcenintensiver e/a-Vorgang erforderlich, z. b. das Leeren des Inhalts eines zwischen Puffers in eine Datei oder das Senden eines Pakets über ein Netzwerk, um eine Verbindung zu schließen.When your class owns unmanaged resources and releasing them requires a resource-intensive I/O operation, such as flushing the contents of an intermediate buffer into a file or sending a packet over a network to close a connection.

Verwenden Sie DisposeAsync die-Methode, um die Bereinigung durchzuführen, die nach dem Verwenden der nicht verwalteten Ressourcen erforderlich ist, z. b. das freigeben, freigeben oder Zurücksetzen der nicht verwalteten Ressourcen.Use the DisposeAsync method to perform whatever cleanup is necessary after using the unmanaged resources, such as freeing, releasing, or resetting the unmanaged resources. Weitere Informationen zu nicht verwalteten Ressourcen in .net finden Sie unter Bereinigen von nicht verwalteten Ressourcen.For more information about unmanaged resources in .NET, see Cleaning Up Unmanaged Resources.

Methoden

DisposeAsync()

Führt anwendungsspezifische Aufgaben aus, die mit dem asynchronen Freigeben, Zurückgeben oder Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.

Erweiterungsmethoden

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguriert, wie Wartezeiten auf die Aufgaben angewandt werden, die von einem asynchronen verwerfbaren Element zurückgegeben werden.Configures how awaits on the tasks returned from an async disposable are performed.

Gilt für: