次の方法で共有


IAsyncDisposable.DisposeAsync メソッド

定義

アンマネージ リソースの非同期の解放およびリセットに関連付けられているアプリケーション定義のタスクを実行します。

public:
 System::Threading::Tasks::ValueTask DisposeAsync();
public System.Threading.Tasks.ValueTask DisposeAsync ();
abstract member DisposeAsync : unit -> System.Threading.Tasks.ValueTask
Public Function DisposeAsync () As ValueTask

戻り値

ValueTask

非同期の破棄操作を表すタスク。

注釈

このメソッドを使用して、このインターフェイスを実装するクラスのインスタンスによって保持されているファイル、ストリーム、ハンドルなどのアンマネージ リソースを非同期的に閉じるか解放します。 代わりにこのメソッドを使用すると、GUI アプリケーションの IDisposable.Dispose メイン スレッドを長時間ブロックすることなく、リソースを大量に消費する破棄操作を実行できます。

警告

IAsyncDisposableインターフェイスを実装するクラスを使用している場合は、クラスの使用が終了したら、そのDisposeAsync実装を呼び出す必要があります。 詳細については、トピックの「IAsyncDisposable を実装するオブジェクトの使用」セクションを IAsyncDisposable 参照してください。

このメソッドを実装する場合は、包含階層を介して呼び出しを伝達することで、保持されているすべてのリソースが解放されていることを確認します。 たとえば、オブジェクト A がオブジェクト B を割り当て、オブジェクト B がオブジェクト C を割り当てる場合、A の DisposeAsync 実装は B を呼び出す DisposeAsync 必要があり、C を呼び出す DisposeAsync 必要があります。基底クラスが実装されている DisposeAsync 場合、オブジェクトはその基底クラスのメソッドも呼び出す IAsyncDisposable必要があります。

オブジェクトの DisposeAsync メソッドが複数回呼び出される場合、オブジェクトは最初のメソッドの後のすべての呼び出しを無視し、正常に完了した ValueTask呼び出しを同期的に返す必要があります。 メソッドが複数回呼び出される場合、オブジェクトは例外を DisposeAsync スローしないでください。 リソースが既に破棄されている場合、DisposeAsync以外のインスタンスメソッドはObjectDisposedExceptionをスローする可能性があります。

適用対象