IAsyncDisposable 接口

定义

提供一种用于异步释放非托管资源的机制。

public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
派生

注解

在 .NET 中,拥有非托管资源的类通常实现 IDisposable 接口,以提供同步释放非托管资源的机制。 但是,在某些情况下,除了 (以外,他们需要提供一种异步机制来释放非托管资源,而不是) 同步资源。 提供此类机制使使用者能够执行资源密集型处置操作,而不会长时间阻止 GUI 应用程序的主线程。

IAsyncDisposable.DisposeAsync此接口的 方法返回一个ValueTask表示异步释放操作的 。 拥有非托管资源的类实现此方法,这些类的使用者在不再需要对象时对对象调用此方法。

异步方法与 async C# 和 Visual Basic 中的 和 await 关键字结合使用。 有关详细信息,请参阅 C# 中的任务异步编程模型 或使用 Async 和 Await (Visual Basic) 异步编程

使用实现 IAsyncDisposable 的对象

如果应用程序使用实现 IAsyncDisposable的对象,则应在使用完对象后调用该对象的 DisposeAsync 实现。 若要确保在发生异常时也能释放资源,请将使用 IAsyncDisposable 对象的代码放入从版本 8.0 开始的 C# (using 语句中) 或在 语句的 try/finally 子句中finally调用 DisposeAsync 方法。 有关该 try/finally 模式的详细信息,请参阅 try-finally (C#) 或 Try...抓住。。。Finally Statement (Visual Basic) 。

实现 IAsyncDisposable

可以在以下情况下实现 IAsyncDisposable

  • 开发拥有非托管资源的异步枚举器时。 异步枚举器与 C# 8.0 异步流功能一起使用。 有关异步流的详细信息,请参阅 教程:使用 C# 8.0 和 .NET Core 3.0 生成和使用异步流

  • 当类拥有非托管资源并释放它们时,需要资源密集型 I/O 操作,例如将中间缓冲区的内容刷新到文件中或通过网络发送数据包以关闭连接。

DisposeAsync使用 方法在使用非托管资源后执行所需的任何清理,例如释放、释放或重置非托管资源。 有关详细信息,请参阅 实现 DisposeAsync 方法

方法

DisposeAsync()

以异步方式执行与释放或重置非托管资源相关的应用程序定义的任务。

扩展方法

ConfigureAwait(IAsyncDisposable, Boolean)

配置如何执行从异步可处置项返回的任务的等待。

适用于