エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

IDisposable.Dispose メソッド

2013/12/12

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

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

void Dispose()

このメソッドは、このインターフェイスを実装するクラスのインスタンスが保持する、ファイル、ストリーム、ハンドルなどのアンマネージ リソースを閉じたり解放したりする場合に使用します。このメソッドは、通常、オブジェクトが保持するリソースの解放や、オブジェクトの再利用の準備に関連付けられたすべてのタスクで使用されます。

このメソッドを実装する場合、この呼び出しをコンテインメント階層全体に伝達することによって、保持しているリソースがすべて確実に解放されるようにする必要があります。たとえば、オブジェクト A がオブジェクト B を割り当て、オブジェクト B がオブジェクト C を割り当てると、A の Dispose 実装は B の Dispose を呼び出し、さらにこれが C の Dispose を呼び出す必要があります。各オブジェクトはさらに、それぞれの基本クラスが IDisposable を実装する場合は、同クラスの Dispose メソッドを呼び出す必要があります。

オブジェクトの Dispose メソッドが複数回呼び出された場合、そのオブジェクトは最初の呼び出し以外は無視する必要があります。オブジェクトの Dispose メソッドを複数回呼び出す場合は、このオブジェクトから例外をスローしないようにします。Dispose 以外のインスタンス メソッドでは、リソースが既に破棄されている場合に、ObjectDisposedException をスローできます。

割り当てられている状態と解放されている状態を示すために、リソースの種類に応じて特別な規則を使用する場合があります。たとえば、ストリーム クラスは従来からオープン状態またはクローズ状態と見なされています。そのような規則を持つクラスを実装する場合、Dispose メソッドを呼び出すパブリック メソッドに、Close などのカスタム名を付けて実装することもできます。

Dispose メソッドは明示的に呼び出す必要があるため、IDisposable を実装するオブジェクトは、Dispose が呼び出されなかった場合にリソースの解放を処理するファイナライザーも実装する必要があります。既定では、メモリを再要求する前に、ガベージ コレクターがオブジェクトのファイナライザーを自動的に呼び出します。ただし、Dispose メソッドが呼び出されていれば、破棄されたオブジェクトのファイナライザーをガベージ コレクターが呼び出す必要は通常ありません。自動終了されないようにするには、Dispose 実装で GC.SuppressFinalize メソッドを呼び出します。

Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft