AppDomain.IsFinalizingForUnload メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このアプリケーション ドメインがアンロード中で、これに含まれるオブジェクトが共通言語ランタイムによって終了処理されているかどうかを示します。
public:
bool IsFinalizingForUnload();
public bool IsFinalizingForUnload ();
member this.IsFinalizingForUnload : unit -> bool
Public Function IsFinalizingForUnload () As Boolean
戻り値
アプリケーション ドメインがアンロード中で、共通言語ランタイムがファイナライザーの呼び出しを既に開始している場合は true
。これ以外の場合は false
。
注釈
オブジェクトの最終処理メソッドを使用すると、オブジェクトがガベージ コレクションされる前に、必要なクリーンアップ操作を実行できます。 最終処理後、オブジェクトにはアクセスできますが、無効な状態であるため使用できません。 最終的に、ガベージ コレクションが完了し、オブジェクトが再利用されます。
オブジェクトの最終処理メソッドは、ガベージ コレクション中、共通言語ランタイムがシャットダウンするとき、またはオブジェクトを含むアプリケーション ドメインがアンロードされるときに呼び出されます。 メソッドは IsFinalizingForUnload 最後の true
ケースでのみ返されます。最終処理がルーチン ガベージ コレクションまたは CLR シャットダウンの結果である場合は返 true
されません。
注意
終了が CLR シャットダウンによるものかどうかを判断するには、プロパティを使用します Environment.HasShutdownStarted 。 終了処理が、アプリケーション ドメインのアンロードまたは CLR シャットダウンが原因である場合に返 true
されます。
ドメインのアンロード中に最終処理メソッドで実行しているときに、静的フィールドによって参照され、終了メソッドを持つ別のオブジェクトにアクセスしたい場合があります。 ただし、アクセスされたオブジェクトが既に終了している可能性があるため、これを確実に行うことはできません。
注意
この規則の例外は Console 、ストリーム オブジェクトを参照する静的フィールドを含むクラスですが、ドメインのアンロード中やシステムのシャットダウン中でも常にシステム コンソールに書き込むことができるように特別に実装されています。
オブジェクトを含むアプリケーション ドメインがアンロードされているかどうかを判断するには、オブジェクトの最終処理メソッドでこのメソッドを使用します。 その場合、最終処理メソッドを持ち、静的フィールドによって参照されているオブジェクトに確実にアクセスすることはできません。