IAsyncDisposable Interfejs

Definicja

Zapewnia mechanizm zwalniania niezarządzanych zasobów asynchronicznie.Provides a mechanism for releasing unmanaged resources asynchronously.

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

Uwagi

W programie .NET klasy, które są niezarządzanych zasobów zwykle implementują interfejs IDisposable, aby zapewnić mechanizm do synchronicznego zwalniania niezarządzanych zasobów.In .NET, classes that own unmanaged resources usually implement the IDisposable interface to provide a mechanism for releasing unmanaged resources synchronously. Jednak w niektórych przypadkach należy zapewnić asynchroniczny mechanizm zwalniania niezarządzanych zasobów oprócz (lub zamiast) synchronicznie.However, in some cases they need to provide an asynchronous mechanism for releasing unmanaged resources in addition to (or instead of) the synchronous one. Dzięki temu mechanizm umożliwia konsumentom wykonywanie operacji usuwania intensywnie korzystających z zasobów bez blokowania głównego wątku aplikacji graficznego interfejsu użytkownika przez długi czas.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.

Metoda IAsyncDisposable.DisposeAsync tego interfejsu zwraca ValueTask, który reprezentuje asynchroniczną operację Dispose.The IAsyncDisposable.DisposeAsync method of this interface returns a ValueTask that represents the asynchronous dispose operation. Klasy, w których są używane zasoby niezarządzane, implementują tę metodę, a odbiorca tych klas wywołuje tę metodę na obiekcie, gdy nie jest już potrzebne.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.

Metody asynchroniczne są używane w połączeniu ze słowami kluczowymi async i await C# w i Visual Basic.The async methods are used in conjunction with the async and await keywords in C# and Visual Basic. Aby uzyskać więcej insformation, zobacz model programowania asynchronicznego zadań w C# programie lub asynchroniczne programowanie z użyciem Async i Await (Visual Basic).For more insformation, see The Task asynchronous programming model in C# or Asynchronous Programming with Async and Await (Visual Basic).

Korzystanie z obiektu, który implementuje IAsyncDisposableUsing an object that implements IAsyncDisposable

Jeśli aplikacja używa obiektu, który implementuje IAsyncDisposable, należy wywołać implementację DisposeAsync obiektu po zakończeniu korzystania z niego.If your application uses an object that implements IAsyncDisposable, you should call the object's DisposeAsync implementation when you are finished using it. Aby upewnić się, że zasoby są wydane nawet w przypadku wyjątku, wywołaj metodę DisposeAsync wewnątrz klauzuli finally try/finally.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. Aby uzyskać więcej informacji na temat wzorca finally /try, zobacz try-finally (C#) lub try... Catch... Finally — instrukcja (Visual Basic).For more information about the try/finally pattern, see try-finally (C#) or Try...Catch...Finally Statement (Visual Basic).

Implementowanie IAsyncDisposableImplementing IAsyncDisposable

IAsyncDisposable można zaimplementować w następujących sytuacjach:You might implement IAsyncDisposable in the following situations:

  • Podczas tworzenia asynchronicznego modułu wyliczającego należącego do niezarządzanych zasobów.When developing an asynchronous enumerator that owns unmanaged resources. Asynchroniczne moduły wyliczające są używane z C# funkcją strumieni asynchronicznych 8,0.Asynchronous enumerators are used with the C# 8.0 async streams feature. Aby uzyskać więcej informacji na temat strumieni asynchronicznych, zobacz Samouczek: generowanie i używanie C# strumieni asynchronicznych przy użyciu 8,0 i .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.

  • Gdy klasa posiada niezarządzane zasoby i zwalnia je, wymaga operacji We/Wy intensywnie obciążających zasoby, takich jak opróżnianie zawartości buforu pośredniego do pliku lub wysyłanie pakietu przez sieć w celu zamknięcia połączenia.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.

Użyj metody DisposeAsync, aby wykonać dowolne oczyszczanie po użyciu niezarządzanych zasobów, takich jak zwalnianie, zwalnianie lub resetowanie niezarządzanych zasobów.Use the DisposeAsync method to perform whatever cleanup is necessary after using the unmanaged resources, such as freeing, releasing, or resetting the unmanaged resources. Aby uzyskać więcej informacji na temat zasobów niezarządzanych w programie .NET, zobacz Oczyszczanie zasobów niezarządzanych.For more information about unmanaged resources in .NET, see Cleaning Up Unmanaged Resources.

Metody

DisposeAsync()

Wykonuje zadania zdefiniowane przez aplikację skojarzone z zwalnianiem, zwalnianiem lub resetowaniem niezarządzanych zasobów asynchronicznie.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.

Metody rozszerzania

ConfigureAwait(IAsyncDisposable, Boolean)

Określa, jak oczekują oczekiwania na zadania zwracane z asynchronicznej operacji tworzenia.Configures how awaits on the tasks returned from an async disposable are performed.

Dotyczy