IAsyncDisposable Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет механизм асинхронного освобождения неуправляемых ресурсов.
public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
- Производный
Комментарии
В .NET классы, владеющие неуправляемыми ресурсами, обычно реализуют интерфейс IDisposable, чтобы обеспечить механизм синхронного освобождения неуправляемых ресурсов. Однако в некоторых случаях им необходимо предоставить асинхронный механизм для освобождения неуправляемых ресурсов в дополнение к синхронному (или вместо него). Предоставление такого механизма позволяет пользователю выполнять ресурсоемкие операции освобождения ресурсов без блокировки основного потока приложения графического интерфейса на продолжительное время.
Метод IAsyncDisposable.DisposeAsync этого интерфейса возвращает ValueTask, которая представляет асинхронную операцию удаления. Классы, принадлежащие неуправляемым ресурсам, реализуют этот метод, и потребитель этих классов вызывает этот метод для объекта, если он больше не нужен.
Асинхронные методы используются в сочетании с asyncawait ключевыми словами в C# и Visual Basic. Дополнительные сведения см. в статье "Схема асинхронного программирования Task в C#" или "Асинхронное программирование с помощью Async и Await (Visual Basic)".
Использование объекта, реализующего IAsyncDisposable
Если ваше приложение использует объект, реализующий IAsyncDisposable, следует вызвать DisposeAsync этого объекта после завершения его использования. Чтобы убедиться, что ресурсы выпускаются даже в случае исключения, поместите код, который использует IAsyncDisposable объект в инструкцию using (в C# начиная с версии 8.0) или вызовите DisposeAsync метод внутри finally предложения инструкции try/finally . Дополнительные сведения о шаблоне try/finally см. try-finally (C#) или Try...Catch...Finally (Visual Basic).
Реализуйте IAsyncDisposable
Вы можете реализовать IAsyncDisposable в следующих ситуациях:
- При разработке асинхронного перечислителя, которому принадлежат неуправляемые ресурсы. Асинхронные перечислители используются с функцией асинхронных потоков C# 8.0. Дополнительные сведения об асинхронных потоках см. в руководстве. Создание и использование асинхронных потоков с помощью C# 8.0 и .NET Core 3.0.
- Если ваш класс имеет неуправляемые ресурсы, освобождение которых требует ресурсоемкой операции ввода-вывода, такой как очистка содержимого промежуточного буфера в файл или отправка пакета через сеть для закрытия подключения.
Используйте метод DisposeAsync для выполнения любой очистки, необходимой после использования неуправляемых ресурсов, таких как освобождение, удаление или сброс этих ресурсов. Дополнительные сведения см. в разделе "Реализация метода DisposeAsync".
Методы
| Имя | Описание |
|---|---|
| DisposeAsync() |
Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или асинхронным сбросом неуправляемых ресурсов. |
Методы расширения
| Имя | Описание |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Настраивает способ ожидания задач, возвращаемых из асинхронного удаления. |