IAsyncDisposable 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供用於非同步釋放非受控資源的機制。
public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
- 衍生
備註
在 .NET 中,擁有非受控資源的類別通常會實 IDisposable 作 介面,以提供同步釋放 Unmanaged 資源的機制。 不過,在某些情況下,除了 (或 ,而不是) 同步資源之外,他們還需要提供非同步機制來釋放非受控資源。 提供這類機制可讓取用者執行耗用大量資源的處置作業,而不會長時間封鎖 GUI 應用程式的主要執行緒。
這個介面的 方法會 IAsyncDisposable.DisposeAsync 傳 ValueTask 回 ,表示非同步處置作業。 擁有 Unmanaged 資源的類別會實作這個方法,而且不再需要時,這些類別的取用者會在物件上呼叫這個方法。
非同步方法會與 C# 和 Visual Basic 中的 和 await
關鍵字搭配 async
使用。 如需詳細資訊,請參閱 C# 中的工作非同步程式設計模型 ,或使用 Async 和 Await 進行非同步程式設計,以及使用 Await (Visual Basic) 。
使用實作 IAsyncDisposable 的物件
如果您的應用程式使用實作 IAsyncDisposable
的物件,則當您完成使用物件時,應該呼叫物件的 DisposeAsync 實作。 若要確定即使發生例外狀況,仍會釋放資源,請將使用 IAsyncDisposable
物件的程式碼放入 C# 中,從 8.0 版開始) 的using語句 (,或在 語句的 /try
finally
子句內 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。 |