IAsyncDisposable 介面

定義

提供用於非同步釋放非受控資源的機制。

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

備註

在 .NET 中,擁有非受控資源的類別通常會實 IDisposable 作 介面,以提供同步釋放 Unmanaged 資源的機制。 不過,在某些情況下,除了 (或 ,而不是) 同步資源之外,他們還需要提供非同步機制來釋放非受控資源。 提供這類機制可讓取用者執行耗用大量資源的處置作業,而不會長時間封鎖 GUI 應用程式的主要執行緒。

這個介面的 方法會 IAsyncDisposable.DisposeAsyncValueTask 回 ,表示非同步處置作業。 擁有 Unmanaged 資源的類別會實作這個方法,而且不再需要時,這些類別的取用者會在物件上呼叫這個方法。

非同步方法會與 C# 和 Visual Basic 中的 和 await 關鍵字搭配 async 使用。 如需詳細資訊,請參閱 C# 中的工作非同步程式設計模型 ,或使用 Async 和 Await 進行非同步程式設計,以及使用 Await (Visual Basic)

使用實作 IAsyncDisposable 的物件

如果您的應用程式使用實作 IAsyncDisposable 的物件,則當您完成使用物件時,應該呼叫物件的 DisposeAsync 實作。 若要確定即使發生例外狀況,仍會釋放資源,請將使用 IAsyncDisposable 物件的程式碼放入 C# 中,從 8.0 版開始) 的using語句 (,或在 語句的 /tryfinally 子句內 finally 呼叫 DisposeAsync 方法。 如需模式的詳細資訊 try/finally ,請參閱try-finally (C#) 或Try...抓住。。。Finally 語句 (Visual Basic) 。

實作 IAsyncDisposable

您可能會在下列情況下實 IAsyncDisposable 作:

  • 開發擁有 Unmanaged 資源的非同步列舉值時。 非同步列舉值會與 C# 8.0 非同步資料流程功能搭配使用。 如需非同步資料流程的詳細資訊,請參閱 教學課程:使用 C# 8.0 和 .NET Core 3.0 產生和使用非同步資料流程

  • 當您的類別擁有 Unmanaged 資源並釋放它們時,需要大量資源的 I/O 作業,例如將中繼緩衝區的內容排清到檔案中,或透過網路傳送封包以關閉連線。

DisposeAsync使用 方法來執行使用 Unmanaged 資源之後所需的任何清除,例如釋放、釋放或重設 Unmanaged 資源。 如需詳細資訊,請參閱 實作 DisposeAsync 方法

方法

DisposeAsync()

非同步執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之由應用程式定義的工作。

擴充方法

ConfigureAwait(IAsyncDisposable, Boolean)

設定如何執行從非同步可處置項目傳回的工作 await。

適用於