AppDomain.IsFinalizingForUnload メソッド
このアプリケーション ドメインがアンロード中で、これに含まれるオブジェクトが共通言語ランタイムによって終了処理されているかどうかを示します。
Public Function IsFinalizingForUnload() As Boolean
[C#]
public bool IsFinalizingForUnload();
[C++]
public: bool IsFinalizingForUnload();
[JScript]
public function IsFinalizingForUnload() : Boolean;
戻り値
アプリケーション ドメインがアンロード中で、共通言語ランタイムがファイナライザの呼び出しを既に開始している場合は true 。これ以外の場合は false 。
解説
オブジェクトの終了メソッドを使用すると、そのオブジェクトがガベージ コレクションによって収集される前に、必要なクリーンアップ操作を実行できます。オブジェクトの終了後、そのオブジェクトにアクセスすることはできますが、状態が無効であるため使用することはできません。最終的に、ガベージ コレクションがそのオブジェクトを完了させて解放します。
オブジェクトの終了メソッドは、ガベージ コレクションの実行時、そのオブジェクトを含むアプリケーション ドメインがアンロードされるとき、または共通言語ランタイムがシャットダウンされるときのいずれかの状況で呼び出されます。
ドメインのアンロード中、終了メソッドで処理を実行しているときに、静的フィールドで参照されていて、終了メソッドを持つ別のオブジェクトにアクセスする必要が生じることがあります。しかし、それらのオブジェクトが既に終了されている可能性があるため、このようなアクセス操作は必ず成功するとは限りません。
メモ ただし例外として Console クラスがあります。このクラスはストリーム オブジェクトを参照する静的フィールドを含んでいますが、ドメインのアンロード中やシステムのシャットダウン時でもシステム コンソールに必ず書き込むことができるように、特別な形で実装されています。
オブジェクトの終了メソッドでこのメソッドを使用すると、そのオブジェクトを含むアプリケーション ドメインがアンロード中かどうかを判別できます。シャットダウン中の場合は、静的フィールドによって参照され、終了メソッドを持つオブジェクトへのアクセス操作は成功するとは限りません。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
.NET Framework セキュリティ:
- ReflectionPermission (Type.InvokeMember などの機構を通じて遅延バインディングが呼び出されるときに必要なアクセス許可) ReflectionPermissionFlag.MemberAccess (関連する列挙体)
参照
AppDomain クラス | AppDomain メンバ | System 名前空間 | Environment.HasShutdownStarted