AppDomain.IsFinalizingForUnload メソッド


このアプリケーション ドメインがアンロード中で、これに含まれるオブジェクトが共通言語ランタイムによって終了処理されているかどうかを示します。Indicates whether this application domain is unloading, and the objects it contains are being finalized by the common language runtime.

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


アプリケーション ドメインがアンロード中で、共通言語ランタイムがファイナライザーの呼び出しを既に開始している場合は true。これ以外の場合は falsetrue if this application domain is unloading and the common language runtime has started invoking finalizers; otherwise, false.


オブジェクトの終了メソッドを使用すると、オブジェクトがガベージコレクションされる前に必要なクリーンアップ操作を実行できます。The finalization method for an object provides you an opportunity to perform any necessary cleanup operations before the object is garbage collected. 終了後、オブジェクトにはアクセスできますが、無効な状態のため、使用できません。After finalization, the object is accessible but in an invalid state and therefore unusable. 最終的には、ガベージコレクションが完了し、オブジェクトが解放されます。Eventually, garbage collection completes and reclaims the object.

オブジェクトの終了メソッドは、ガベージコレクション中、共通言語ランタイムがシャットダウンしているとき、またはオブジェクトを含むアプリケーションドメインがアンロードされたときに、次のいずれかの状況で呼び出されます。An object's finalization method is called in one of the following situations: during garbage collection, when the common language runtime is shutting down, or when the application domain that contains the object is unloaded. IsFinalizingForUnload メソッドは、最後の場合にのみ true を返します。ファイナライザーがルーチンのガベージコレクションまたは CLR のシャットダウンからの結果を返す場合、true は返しません。The IsFinalizingForUnload method returns true only in the last case; it does not return true if finalization results from routine garbage collection or from CLR shutdown.


ファイナライザーが CLR シャットダウンの原因であるかどうかを確認するには、Environment.HasShutdownStarted プロパティを使用します。To determine whether finalization is due to CLR shutdown, use the Environment.HasShutdownStarted property. アプリケーションドメインがアンロードされているか、または CLR がシャットダウンしていることがファイナライズの原因である場合は、true を返します。It returns true if finalization is due to an application domain being unloaded or to the CLR shutting down.

ドメインのアンロード中に終了メソッドでを実行しているときに、静的フィールドによって参照され、終了メソッドを持つ別のオブジェクトにアクセスすることが必要になる場合があります。While executing in your finalization method during domain unloading, you might want to access another object that is referenced by a static field and has a finalization method. ただし、アクセスされたオブジェクトは既に完了している可能性があるため、確実にこれを行うことはできません。However, you cannot reliably do so because the accessed object might already have been finalized.


この規則の例外は Console クラスです。このクラスには、ストリームオブジェクトを参照する静的フィールドが含まれていますが、ドメインのアンロードまたはシステムのシャットダウン中でも、常にシステムコンソールに書き込むことができるように特別に実装されています。An exception to this rule is the Console class, which contains static fields that reference stream objects, but is implemented specially so you can always write to the system console, even during domain unloading or system shutdown.

オブジェクトの終了メソッドでこのメソッドを使用して、オブジェクトを含むアプリケーションドメインがアンロードされているかどうかを確認します。Use this method in an object's finalization method to determine whether the application domain that contains the object is unloading. その場合、終了メソッドを持ち、静的フィールドによって参照されているオブジェクトに確実にアクセスすることはできません。If that is the case, you cannot reliably access any object that has a finalization method and is referenced by a static field.