IAsyncDisposable.DisposeAsync Метод

Определение

Выполняет определяемые приложением задачи, связанные с высвобождением или сбросом неуправляемых ресурсов асинхронно.

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

Возвращаемое значение

Задача, представляющая асинхронную операцию закрытия.

Комментарии

Используйте этот метод для асинхронного закрытия или освобождения неуправляемых ресурсов, таких как файлы, потоки и дескрипторы, хранящиеся в экземпляре класса , реализующего этот интерфейс. Использование этого метода вместо IDisposable.Dispose позволяет выполнять ресурсоемкую операцию удаления, не блокируя основной поток приложения графического пользовательского интерфейса в течение длительного времени.

Предупреждение

Если вы используете класс, реализующий IAsyncDisposable интерфейс , следует вызвать его DisposeAsync реализацию по завершении работы с классом . Дополнительные сведения см. в разделе "Использование объекта, реализующего IAsyncDisposable" этой статьи IAsyncDisposable .

При реализации этого метода убедитесь, что все удерживаемые ресурсы освобождены, распространяя вызов через иерархию вложенности. Например, если объект A выделяет объект B, а объект B выделяет объект C, то реализация A DisposeAsync должна вызывать DisposeAsync объект B, который, в свою очередь, должен вызывать DisposeAsync для C. Объект также должен вызывать DisposeAsync метод своего базового класса, если базовый класс реализует IAsyncDisposable.

Если метод объекта DisposeAsync вызывается несколько раз, объект должен игнорировать все вызовы после первого и синхронно возвращать успешно завершенный ValueTask. Объект не должен вызывать исключение, если его DisposeAsync метод вызывается несколько раз. Методы экземпляра, отличные от DisposeAsync , могут вызывать исключение , ObjectDisposedException если ресурсы уже удалены.

Применяется к