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ą IDisposable interfejs, 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.

IAsyncDisposable.DisposeAsyncMetoda tego interfejsu zwraca wartość ValueTask reprezentującą 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 z async await słowami kluczowymi i w językach C# 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 języku C# lub asynchroniczne programowanie z funkcją 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ć DisposeAsync implementację 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ą uwalniane nawet w przypadku wyjątku, należy umieścić kod, który używa IAsyncDisposable obiektu do instrukcji using (w języku C# rozpoczynającym się od wersji 8,0) lub wywołać DisposeAsync metodę wewnątrz finally klauzuli try / finally instrukcji.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. Aby uzyskać więcej informacji na temat try / finally wzorca, 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

Można zaimplementować IAsyncDisposable 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 funkcją strumieni asynchronicznych w języku C# 8,0.Asynchronous enumerators are used with the C# 8.0 async streams feature. Aby uzyskać więcej informacji o strumieniach asynchronicznych, zobacz Samouczek: generowanie i używanie strumieni asynchronicznych przy użyciu języków C# 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 DisposeAsync metody, aby wykonać dowolne oczyszczanie po użyciu zasobów niezarządzanych, 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, zobacz implementowanie metody DisposeAsync.For more information, see Implement a DisposeAsync method.

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