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 если ресурсы уже удалены.