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