IAsyncDisposable.DisposeAsync メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
アンマネージ リソースの解放、解放、またはリセットに関連するアプリケーション定義タスクを非同期的に実行します。
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
返品
非同期破棄操作を表すタスク。
注釈
このメソッドを使用して、このインターフェイスを実装するクラスのインスタンスによって保持されているファイル、ストリーム、ハンドルなどのアンマネージ リソースを非同期で閉じるか解放します。 IDisposable.Disposeの代わりにこのメソッドを使用すると、GUI アプリケーションのメイン スレッドを長時間ブロックすることなく、リソースを大量に消費する破棄操作を実行できます。
Warning
IAsyncDisposable インターフェイスを実装するクラスを使用している場合は、クラスの使用が完了したら、そのDisposeAsync実装を呼び出す必要があります。 詳細については、 IAsyncDisposable トピックの「IAsyncDisposable を実装するオブジェクトの使用」セクションを参照してください。
このメソッドを実装する場合は、コンテインメント階層を介して呼び出しを伝達することで、保持されているすべてのリソースが解放されるようにします。 たとえば、オブジェクト A がオブジェクト B を割り当て、オブジェクト B がオブジェクト C を割り当てる場合、A のDisposeAsync実装は B でDisposeAsyncを呼び出す必要があり、C では DisposeAsyncを呼び出す必要があります。また、基底クラスがDisposeAsyncを実装する場合は、その基底クラスの IAsyncDisposable メソッドも呼び出す必要があります。
オブジェクトの DisposeAsync メソッドが複数回呼び出された場合、オブジェクトは最初の呼び出しの後のすべての呼び出しを無視し、正常に完了した ValueTaskを同期的に返す必要があります。 オブジェクトは、DisposeAsync メソッドが複数回呼び出される場合、例外をスローしてはなりません。 リソースが既に破棄されている場合、 DisposeAsync 以外のインスタンス メソッドは ObjectDisposedException をスローできます。