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, normalerweise die- IDisposable 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 einen zurück ValueTask , 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 await Schlüsselwörtern und in c# 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 das asynchrone Programmiermodell der Aufgabe in c# oder die asynchrone 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 implementiert IAsyncDisposable , sollten Sie die-Implementierung des Objekts nach Abschluss der Verwendung von abrufen DisposeAsync .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, platzieren Sie den Code, der das Objekt verwendet, IAsyncDisposable in die using -Anweisung (in c# ab Version 8,0), oder fordern Sie die- DisposeAsync Methode in einer- finally Klausel der- try / finally Anweisung an.To make sure resources are released even in case of an exception, put the code that uses the IAsyncDisposable object into the using statement (in C# beginning from version 8.0) or call the DisposeAsync method inside a finally clause of the try/finally statement. Weitere Informationen zum try / finally Muster finden Sie unter try-endlich (c#) oder try... 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 IAsyncDisposable in 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 Funktion c# 8,0 Async Streams verwendet.Asynchronous enumerators are used with the C# 8.0 async streams feature. Weitere Informationen zu asynchronen Streams finden Sie unter Tutorial: generieren und Verwenden von asynchronen Streams mit c# 8,0 und .net Core 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 die- DisposeAsync 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 finden Sie unter Implementieren einer Dispo-Async-Methode.For more information, see Implement a DisposeAsync method.

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: