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

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > 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



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「CriticalFinalizerObject クラス」の関連用語

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

   

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



CriticalFinalizerObject クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS