IAsyncDisposable IAsyncDisposable IAsyncDisposable IAsyncDisposable Interface

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 in der Regel besitzen die IDisposable Schnittstelle, um einen Mechanismus für die Freigabe von nicht verwalteten Ressourcen synchron.In .NET, classes that own unmanaged resources usually implement the IDisposable interface to provide a mechanism for releasing unmanaged resources synchronously. Jedoch in einigen Fällen müssen sie ein asynchrones Verfahren zum Freigeben von nicht verwalteter Ressourcen, die zusätzlich zu (oder instead of) zu den synchronen ein.However, in some cases they need to provide an asynchronous mechanism for releasing unmanaged resources in addition to (or instead of) the synchronous one. Bereitstellung mit einem solchen Mechanismus ermöglicht den Consumer Dispose für ressourcenintensive Vorgänge ausführen, ohne den Hauptthread einer GUI-Anwendung für einen langen Zeitraum zu blockieren.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 ein ValueTask den asynchronen Dispose-Vorgang darstellt.The IAsyncDisposable.DisposeAsync method of this interface returns a ValueTask that represents the asynchronous dispose operation. Klassen, die nicht verwaltete Ressourcen besitzen diese Methode implementieren, und der Consumer diese Klassen ruft diese Methode für ein Objekt, 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 verwendet, in Verbindung mit der async und await Schlüsselwörter in C# und Visual Basic.The async methods are used in conjunction with the async and await keywords in C# and Visual Basic. Weitere Insformation, finden Sie unter asynchrone Programmiermodell in der Task C# oder asynchrone Programmierung mit Async und Await (Visual Basic).For more insformation, see The Task asynchronous programming model in C# or Asynchronous Programming with Async and Await (Visual Basic).

Mithilfe eines Objekts, das IAsyncDisposable implementiert.Using an object that implements IAsyncDisposable

Wenn Ihre Anwendung ein Objekt verwendet, die implementiert IAsyncDisposable, rufen Sie die Objekteigenschaften DisposeAsync Implementierung, wenn Sie mit der sie fertig sind.If your application uses an object that implements IAsyncDisposable, you should call the object's DisposeAsync implementation when you are finished using it. Aufrufen, um sicherzustellen, dass Ressourcen werden freigegeben, selbst bei einer Ausnahme, die DisposeAsync Methode innerhalb einer finally -Klausel der try / finally Anweisung.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 zu den try / finally Muster, finden Sie unter Try-finally- (C#) oder testen... Catch... Finally-Anweisung (Visual Basic).For more information about the try/finally pattern, see try-finally (C#) or Try...Catch...Finally Statement (Visual Basic).

Implementieren von IAsyncDisposableImplementing IAsyncDisposable

Sie implementiert möglicherweise IAsyncDisposable in den folgenden Situationen:You might implement IAsyncDisposable in the following situations:

  • Wenn Sie einen asynchronen Enumerator zu entwickeln, der nicht verwaltete Ressourcen besitzt.When developing an asynchronous enumerator that owns unmanaged resources. Asynchrone Enumeratoren werden verwendet, mit der C# 8.0 Async-Streams-Funktion.Asynchronous enumerators are used with the C# 8.0 async streams feature. Weitere Informationen zu asynchronen Streams, finden Sie unter Lernprogramm: Generieren und nutzen Sie asynchrone Datenströme 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 besitzt, nicht verwaltete Ressourcen und freigegeben werden, erfordert einen ressourcenintensive e/a-Vorgang wie die leeren den Inhalt einer Zwischenpuffer in eine Datei oder das Senden eines Pakets über ein Netzwerk 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 der DisposeAsync Methode, um zu den Cleanup erforderlich ist, nach der Verwendung von nicht verwalteten Ressourcen, z. B. Freigabe, Freigabe oder das Zurücksetzen von 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() DisposeAsync() DisposeAsync() 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.

Extension Methods

ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean)
ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean)

Gilt für: