System.IAsyncDisposable 介面
本文提供此 API 參考文件的補充備註。
在 .NET 中,擁有 Unmanaged 資源的類別通常會實 IDisposable 作 介面,以提供同步釋放 Unmanaged 資源的機制。 不過,在某些情況下,除了同步資源之外,他們還需要提供異步機制來釋放非受控資源。 提供這類機制可讓取用者執行需要大量資源的處置作業,而不會長時間封鎖 GUI 應用程式的主要線程。
這個 IAsyncDisposable.DisposeAsync 介面的 方法會 ValueTask 傳回 ,表示異步處置作業。 擁有 Unmanaged 資源的類別會實作這個方法,而這些類別的取用者在不再需要物件時會呼叫此方法。
異步方法會與 C# 和 Visual Basic 中的 和 await
關鍵詞搭配async
使用。 如需詳細資訊,請參閱 C# 中的工作異步程序設計模型或使用 Async 和 Await 進行異步程式設計(Visual Basic)。
使用實作 IAsyncDisposable 的物件
如果您的應用程式使用實作 IAsyncDisposable
的物件,則當您完成使用物件時,應該呼叫 對象的 DisposeAsync 實作。 若要確定即使發生例外狀況,仍會釋放資源,請將使用 IAsyncDisposable
對象的程序代碼放入 using 語句中(從 8.0 版開始的 C# 中),或在 語句的/finally
try
子句內finally
呼叫 DisposeAsync 方法。 如需模式的詳細資訊 try
/finally
,請參閱 try-finally (C#) 或 Try...抓住。。。Finally Statement (Visual Basic)。
實作 IAsyncDisposable
您可能會在下列情況下實 IAsyncDisposable
作:
- 開發擁有 Unmanaged 資源的異步列舉值時。 異步列舉值會與 C# 8.0 異步數據流功能搭配使用。 如需異步數據流的詳細資訊,請參閱 教學課程:使用 C# 8.0 和 .NET Core 3.0 產生和使用異步數據流。
- 當您的類別擁有非受控資源並釋放它們時,需要大量資源的 I/O 作業,例如將中繼緩衝區的內容排清到檔案中,或透過網路傳送封包以關閉連線。
DisposeAsync使用 方法來執行使用 Unmanaged 資源之後所需的任何清除,例如釋放、釋放或重設 Unmanaged 資源。 如需詳細資訊,請參閱 實作 DisposeAsync 方法。