Udostępnij za pośrednictwem


IAsyncDisposable.DisposeAsync Metoda

Definicja

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.

Dotyczy