AppDomain.IsFinalizingForUnload メソッド

定義

このアプリケーション ドメインがアンロード中で、これに含まれるオブジェクトが共通言語ランタイムによって終了処理されているかどうかを示します。

public:
 bool IsFinalizingForUnload();
public bool IsFinalizingForUnload ();
member this.IsFinalizingForUnload : unit -> bool
Public Function IsFinalizingForUnload () As Boolean

戻り値

Boolean

アプリケーション ドメインがアンロード中で、共通言語ランタイムがファイナライザーの呼び出しを既に開始している場合は true。これ以外の場合は false

注釈

オブジェクトの最終処理メソッドを使用すると、オブジェクトがガベージ コレクションされる前に、必要なクリーンアップ操作を実行できます。 最終処理後、オブジェクトにはアクセスできますが、無効な状態であるため使用できません。 最終的に、ガベージ コレクションが完了し、オブジェクトが再利用されます。

オブジェクトの最終処理メソッドは、ガベージ コレクション中、共通言語ランタイムがシャットダウンするとき、またはオブジェクトを含むアプリケーション ドメインがアンロードされるときに呼び出されます。 メソッドは IsFinalizingForUnload 最後の true ケースでのみ返されます。最終処理がルーチン ガベージ コレクションまたは CLR シャットダウンの結果である場合は返 true されません。

注意

終了が CLR シャットダウンによるものかどうかを判断するには、プロパティを使用します Environment.HasShutdownStarted 。 終了処理が、アプリケーション ドメインのアンロードまたは CLR シャットダウンが原因である場合に返 true されます。

ドメインのアンロード中に最終処理メソッドで実行しているときに、静的フィールドによって参照され、終了メソッドを持つ別のオブジェクトにアクセスしたい場合があります。 ただし、アクセスされたオブジェクトが既に終了している可能性があるため、これを確実に行うことはできません。

注意

この規則の例外は Console 、ストリーム オブジェクトを参照する静的フィールドを含むクラスですが、ドメインのアンロード中やシステムのシャットダウン中でも常にシステム コンソールに書き込むことができるように特別に実装されています。

オブジェクトを含むアプリケーション ドメインがアンロードされているかどうかを判断するには、オブジェクトの最終処理メソッドでこのメソッドを使用します。 その場合、最終処理メソッドを持ち、静的フィールドによって参照されているオブジェクトに確実にアクセスすることはできません。

適用対象

こちらもご覧ください