CriticalFinalizerObjectとは? わかりやすく解説

CriticalFinalizerObject クラス

メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。

派生クラスのすべての終了コードが確実に重大であるとマークされるようにします。

名前空間: System.Runtime.ConstrainedExecution
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public MustInherit Class
 CriticalFinalizerObject
Dim instance As CriticalFinalizerObject
[ComVisibleAttribute(true)] 
public abstract class CriticalFinalizerObject
[ComVisibleAttribute(true)] 
public ref class CriticalFinalizerObject abstract
/** @attribute ComVisibleAttribute(true) */ 
public abstract class CriticalFinalizerObject
ComVisibleAttribute(true) 
public abstract class CriticalFinalizerObject
解説解説

CriticalFinalizerObject クラスから派生したクラスは、暗黙的に制約された実行領域 (CER) として扱われます。これにより、ファイナライザ内のコードには、信頼性が十分高いコントラクトを持つコードだけを呼び出すように要求されます。CER の詳細については、System.Runtime.ConstrainedExecution 名前空間のトピックを参照してください。

CriticalFinalizerObject クラスから派生したクラスでは、ファイナライザが CER の規則に従っている限り、CLR によって強制的にアプリケーション ドメインがアンロードされたり、スレッドが中断されたりするような状況でも、絶対に実行されなければならない終了コードについてはすべて実行されるよう、共通言語ランタイム (CLR) によって保証されます。ファイナライザが CER の規則に違反していると、実行に失敗する場合があります。さらに、CLR によって、通常のファイナライザと重大なファイナライザ間の弱い順序付けが確立されます。ガベージ コレクションによって同時にクリアされるオブジェクトについては、重大なファイナライザの前に、すべての重大ではないファイナライザが呼び出されます。たとえば、CriticalFinalizerObject から派生した SafeHandle クラスにデータを保持する FileStream などのクラスは、標準のファイナライザを実行して、バッファ内の既存データをフラッシュできます。

ほとんどの場合、CriticalFinalizerObject クラスから派生するクラスを作成する必要はありません。.NET Framework クラス ライブラリには、リソース処理用の重大な終了操作の機能を提供する SafeHandle と CriticalHandle の 2 つのクラスが用意されています。さらに、.NET Framework には、SafeHandle クラスから派生した作成済みのクラスのセットが用意されています。このセットは Microsoft.Win32.SafeHandles 名前空間にあります。これらのクラスは、ファイルとオペレーティング システムの処理をサポートする共通機能を提供するために設計されています。

使用例使用例

SafeFileHandle クラスを使用して、標準入力ストリームと標準出力ストリームの重大な終了操作を提供するコード例を次に示します。SafeHandle クラスから派生した SafeFileHandle は、FileStream コンストラクタでファイル ストリームに渡されます。

using System;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Win32.SafeHandles;

namespace CriticalFinalizer
{
    class Program
    {
        const int STD_INPUT_HANDLE   = -10;
        const int STD_OUTPUT_HANDLE = -11;
        const int STD_ERROR_HANDLE  =  -12;
        [DllImport("Kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern IntPtr GetStdHandle(int
 type);

        static void Main(string[]
 args)
        {
            FileStream fsIn = null;
            FileStream fsOut = null;
            try
            {
                SafeFileHandle sfhIn = new SafeFileHandle(GetStdHandle(STD_INPUT_HANDLE),
 false);
                fsIn = new FileStream(sfhIn, FileAccess.Read);
                byte[] input = new byte[] {0};
                fsIn.Read(input,0,1);
                SafeFileHandle sfhOut = new SafeFileHandle(GetStdHandle(STD_OUTPUT_HANDLE),
 false);
                fsOut = new FileStream(sfhOut, FileAccess.Write);
                fsOut.Write(input,0,1);
                SafeFileHandle sf = fsOut.SafeFileHandle;
            }
            finally
            {
                if (fsIn != null)
                {
                    fsIn.Close();
                    fsIn = null;
                }
                if (fsOut != null)
                {
                    fsOut.Close();
                    fsOut = null;
                }
            }
        }
        
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
継承階層継承階層
System.Object
  System.Runtime.ConstrainedExecution.CriticalFinalizerObject
     派生クラス
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
CriticalFinalizerObject メンバ
System.Runtime.ConstrainedExecution 名前空間
SafeHandle
CriticalHandle
Microsoft.Win32.SafeHandles

CriticalFinalizerObject コンストラクタ


CriticalFinalizerObject メソッド


CriticalFinalizerObject メンバ

派生クラスのすべての終了コードが確実に重大であるとマークされるようにします。

CriticalFinalizerObject データ型で公開されるメンバを以下の表に示します。


プロテクト コンストラクタプロテクト コンストラクタ
  名前 説明
プロテクト メソッド CriticalFinalizerObject CriticalFinalizerObject クラスの新しいインスタンスを初期化します。
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

CriticalFinalizerObject クラス
System.Runtime.ConstrainedExecution 名前空間
SafeHandle
CriticalHandle
Microsoft.Win32.SafeHandles



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「CriticalFinalizerObject」の関連用語

CriticalFinalizerObjectのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



CriticalFinalizerObjectのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS