IAsyncDisposable.DisposeAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wykonuje zadania zdefiniowane przez aplikację skojarzone z zwalnianiem, zwalnianiem lub resetowaniem niezarządzanych zasobów asynchronicznie.
public:
System::Threading::Tasks::ValueTask DisposeAsync();
public System.Threading.Tasks.ValueTask DisposeAsync();
abstract member DisposeAsync : unit -> System.Threading.Tasks.ValueTask
Public Function DisposeAsync () As ValueTask
Zwraca
Zadanie reprezentujące operację usuwania asynchronicznego.
Uwagi
Użyj tej metody, aby asynchronicznie zamknąć lub zwolnić niezarządzane zasoby, takie jak pliki, strumienie i dojścia przechowywane przez wystąpienie klasy, która implementuje ten interfejs. Użycie tej metody zamiast IDisposable.Dispose umożliwia wykonywanie operacji usuwania intensywnie korzystającej z zasobów bez blokowania głównego wątku aplikacji graficznego interfejsu użytkownika przez długi czas.
Warning
Jeśli używasz klasy implementujące IAsyncDisposable interfejs, należy wywołać jej DisposeAsync implementację po zakończeniu korzystania z klasy . Aby uzyskać więcej informacji, zobacz sekcję "Using an object that implements IAsyncDisposable" (Używanie obiektu implementujące interfejs IAsyncDisposable) w temacie IAsyncDisposable .
Podczas implementowania tej metody upewnij się, że wszystkie przechowywane zasoby są zwalniane przez propagowanie wywołania za pośrednictwem hierarchii zawierania. Jeśli na przykład obiekt A przydziela obiekt B, a obiekt B przydziela obiekt C, implementacja DisposeAsync A musi wywołać metodę B, co musi z kolei wywołać DisposeAsync metodę DisposeAsync C. Obiekt musi również wywołać metodę DisposeAsync klasy bazowej, jeśli klasa bazowa implementuje IAsyncDisposableelement .
Jeśli metoda obiektu jest wywoływana DisposeAsync więcej niż raz, obiekt musi zignorować wszystkie wywołania po pierwszym i synchronicznie zwrócić pomyślnie ukończone ValueTask. Obiekt nie może zgłaszać wyjątku, jeśli jego metoda DisposeAsync jest wywoływana wiele razy. Metody wystąpień inne niż DisposeAsync mogą zgłaszać ObjectDisposedException , gdy zasoby są już usuwane.