IAsyncDisposable インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
アンマネージ リソースを非同期的に解放するためのメカニズムを提供します。
public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
- 派生
注釈
.NET では、アンマネージ リソースを所有するクラスは、通常、アンマネージ リソースを同期的に解放するためのメカニズムを提供するインターフェイスを実装 IDisposable します。 ただし、場合によっては、同期リソースに加えて (または同期リソースではなく) アンマネージド リソースを解放するための非同期メカニズムを提供する必要があります。 このようなメカニズムを提供することで、コンシューマーは、GUI アプリケーションのメイン スレッドを長時間ブロックすることなく、リソースを大量に消費する破棄操作を実行できます。
このインターフェイスのメソッドは IAsyncDisposable.DisposeAsync 、非同期の破棄操作を表す a ValueTask を返します。 アンマネージ リソースを所有するクラスは、このメソッドを実装し、これらのクラスのコンシューマーは、不要になったときにオブジェクトでこのメソッドを呼び出します。
非同期メソッドは、C# および Visual Basic の and async
キーワードとawait
組み合わせて使用されます。 詳細については、「C# のタスク非同期プログラミング モデル」または「Async および Await を使用した非同期プログラミング (Visual Basic)」を参照してください。
IAsyncDisposable を実装するオブジェクトの使用
実装するオブジェクトをアプリケーションで使用する IAsyncDisposable
場合は、使用が完了したときにオブジェクトの DisposeAsync 実装を呼び出す必要があります。 例外が発生した場合でもリソースが確実に解放されるようにするには、オブジェクトを使用するコードを IAsyncDisposable
using ステートメント (バージョン 8.0 以降の C#) に配置するか、ステートメントの句内でメソッドをfinally
/try``finally
呼び出DisposeAsyncします。 パターンのtry
/finally
詳細については、「try-finally (C#)」または「Try..」を参照してください。キャッチ。。。Finally ステートメント (Visual Basic)。
IAsyncDisposable の実装
次の状況で実装 IAsyncDisposable
できます。
アンマネージド リソースを所有する非同期列挙子を開発する場合。 非同期列挙子は、C# 8.0 非同期ストリーム機能と共に使用されます。 非同期ストリームの詳細については、「 チュートリアル: C# 8.0 と .NET Core 3.0 を使用して非同期ストリームを生成および使用する」を参照してください。
クラスがアンマネージ リソースを所有し、それらを解放する場合は、中間バッファーの内容をファイルにフラッシュしたり、ネットワーク経由でパケットを送信して接続を閉じたりするなど、リソースを大量に消費する I/O 操作が必要です。
アンマネージド リソースの DisposeAsync 解放、解放、リセットなど、アンマネージ リソースを使用した後に必要なクリーンアップを実行するには、このメソッドを使用します。 詳細については、「 DisposeAsync メソッドを実装する」を参照してください。
メソッド
DisposeAsync() |
アンマネージ リソースの非同期の解放およびリセットに関連付けられているアプリケーション定義のタスクを実行します。 |
拡張メソッド
ConfigureAwait(IAsyncDisposable, Boolean) |
非同期の破棄可能から返されるタスク上での待機がどのように実行されるかを構成します。 |