Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 zasobożernych operacji dispose bez blokowania głównego wątku aplikacji GUI na dłuższy czas.
Metoda IAsyncDisposable.DisposeAsync tego interfejsu zwraca ValueTask, który reprezentuje asynchroniczną operację 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.
W językach C# i Visual Basic metody asynchroniczne są używane w połączeniu ze słowami kluczowymi async i await. 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żyj obiektu implementującego interfejs IAsyncDisposable
Jeśli aplikacja używa obiektu, który implementuje IAsyncDisposable, należy wywołać implementację DisposeAsync obiektu po zakończeniu jego używania. Aby upewnić się, że zasoby są zwalniane nawet w przypadku wyjątku, umieść kod, który używa obiektu IAsyncDisposable w instrukcji using (w języku C# począwszy od wersji 8.0) lub wywołaj metodę DisposeAsync wewnątrz klauzuli finally instrukcji try/finally. Aby uzyskać więcej informacji na temat try/finally wzorca, zapoznaj się z try-finally (C#) lub Try...Catch...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 zwolnienie wymaga zasobochłonnej operacji we/wy, takiej jak zrzucanie zawartości pośredniego buforu do pliku lub wysyłanie pakietu przez sieć w celu zamknięcia połączenia.
Użyj metody DisposeAsync, aby wykonać czyszczenie, które jest konieczne po użyciu niezarządzanych zasobów, takich jak zwalnianie, uwalnianie lub resetowanie niezarządzanych zasobów. Aby uzyskać więcej informacji, zobacz Implementowanie metody DisposeAsync.