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ę asynchronicznej usuwania.
Uwagi
Użyj tej metody, aby asynchronicznie zamknąć lub zwolnić niezarządzane zasoby, takie jak pliki, strumienie i uchwyty przechowywane przez wystąpienie klasy implementujące 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.
Ostrzeżenie
Jeśli używasz klasy, która implementuje interfejs, po zakończeniu IAsyncDisposable korzystania z klasy należy wywołać jego DisposeAsync
implementację. 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ć DisposeAsync
metodę B, która musi z kolei wywołać 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 DisposeAsync
metoda jest wywoływana wiele razy. Metody wystąpienia inne niż DisposeAsync
mogą zgłaszać ObjectDisposedException , gdy zasoby są już usuwane.