Udostępnij za pośrednictwem


System.IAsyncDisposable, interfejs

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Na platformie .NET klasy, które są właścicielami zasobów niezarządzanych, zwykle implementują IDisposable interfejs, aby zapewnić mechanizm udostępniania niezarządzanych zasobów synchronicznie. Jednak w niektórych przypadkach muszą zapewnić asynchroniczny mechanizm wydawania niezarządzanych zasobów oprócz (lub zamiast) synchronicznego. Zapewnienie takiego mechanizmu umożliwia konsumentowi wykonywanie operacji usuwania intensywnie korzystających z zasobów bez blokowania głównego wątku aplikacji graficznego interfejsu użytkownika przez długi czas.

Metoda IAsyncDisposable.DisposeAsync tego interfejsu zwraca wartość reprezentującą operację ValueTask asynchronicznego usuwania. Klasy, które posiadają zasoby niezarządzane, implementują tę metodę, a odbiorca tych klas wywołuje tę metodę na obiekcie, gdy nie jest już potrzebny.

Metody asynchroniczne są używane w połączeniu ze słowami async kluczowymi i await w językach C# i Visual Basic. Aby uzyskać więcej informacji, zobacz Asynchroniczny model programowania zadań w języku C# lub Asynchroniczne programowanie za pomocą Async i Await (Visual Basic).

Używanie obiektu implementujące interfejs IAsyncDisposable

Jeśli aplikacja używa obiektu, który implementuje IAsyncDisposableelement , należy wywołać implementację DisposeAsync obiektu po zakończeniu korzystania z niego. Aby upewnić się, że zasoby są zwalniane nawet w przypadku wyjątku, umieść kod, który używa IAsyncDisposable obiektu do instrukcji using (w języku C# począwszy od wersji 8.0) lub wywołaj DisposeAsync metodę wewnątrz finally klauzuli try/finally instrukcji . Aby uzyskać więcej informacji na temat try/finally wzorca, zobacz try-finally (C#) lub Try... Złapać... Finally — Instrukcja (Visual Basic).

Implementowanie funkcji IAsyncDisposable

Można zaimplementować IAsyncDisposable w następujących sytuacjach:

  • Podczas tworzenia asynchronicznego modułu wyliczającego, który jest właścicielem niezarządzanych zasobów. Asynchroniczne moduły wyliczania są używane z funkcją strumieni asynchronicznych języka C# 8.0. Aby uzyskać więcej informacji na temat strumieni asynchronicznych, zobacz Samouczek: generowanie i używanie strumieni asynchronicznych przy użyciu języków C# 8.0 i .NET Core 3.0.
  • Gdy klasa jest właścicielem niezarządzanych zasobów i ich wydawania wymaga operacji we/wy intensywnie korzystającej z zasobów, takiej jak opróżnianie zawartości pośredniego buforu do pliku lub wysyłanie pakietu przez sieć w celu zamknięcia połączenia.

DisposeAsync Użyj metody , aby wykonać czyszczenie, które jest konieczne po użyciu niezarządzanych zasobów, takich jak zwalnianie, zwalnianie lub resetowanie niezarządzanych zasobów. Aby uzyskać więcej informacji, zobacz Implementowanie metody DisposeAsync.