このクラスは継承する必要があります。次のコード例では、SafeHandleZeroOrMinusOneIsInvalidから派生するオペレーティングシステムファイルハンドルのカスタムセーフハンドルを作成します。ファイルからバイトを読み取り、16進値を表示します。スレッドを中止する障害テストハーネスも含まれていますが、ハンドル値は解放されます。使用してハンドルを表す場合、非同期スレッドの中止によってハンドルがリークすることがあります。abort.コンパイル済みアプリケーションと同じフォルダーにテキストファイルが必要になります。いう名前を指定した場合、コマンドラインの使用法は次のようになります。ツールを使用して、フォールトを挿入するときのハンドル数を監視します。クラスは、ハンドルリソースの重大な終了処理を提供します。よって意図しないアンマネージオブジェクトを参照することができなくなります。objects.このトピックのセクションは次のとおりです。マネージラッパーオブジェクトにカプセル化することしかできませんでした。これはネイティブコードとの相互運用に便利な方法ですが、予期しないスレッドの中止やスタックオーバーフローなどの非同期例外によってハンドルがリークする可能性があります。これらの非同期例外は、オペレーティングシステムのリソースをクリーンアップするのには問題があり、アプリ内のほぼすべての場所で発生する可能性があります。メソッドをオーバーライドすると、オブジェクトがガベージコレクションされるときにアンマネージリソースのクリーンアップが許可されますが、状況によっては、プラットフォーム呼び出し内でメソッドを実行している間に、ファイナライズ可能なオブジェクトがガベージコレクションによって回収されることがあります。ファイナライザーがそのプラットフォーム呼び出しに渡されたハンドルを解放すると、処理が破損する可能性があります。ファイルの読み取り中など、プラットフォーム呼び出しの間にメソッドがブロックされている間に、ハンドルを再利用することもできます。積極的にハンドルをリサイクルするため、ハンドルがリサイクルされ、機密データが含まれている可能性のある別のリソースを指している可能性があります。これはリサイクル攻撃と呼ばれ、データが破壊され、セキュリティ上の脅威となる可能性があります。クラスを使用すると、これらのオブジェクトの有効期間の問題のいくつかが簡略化され、オペレーティングシステムのリソースがリークしないように、プラットフォーム呼び出しと統合されます。クラスは、中断せずにハンドルの割り当てと解放を行うことによって、オブジェクトの有効期間の問題を解決します。アンロード中に確実に実行されることを保証するクリティカルファイナライザーが含まれます。CriticalFinalizerObjectから継承されるため、すべての重要でないファイナライザーは、重要なファイナライザーの前に呼び出されます。ファイナライザーは、同じガベージコレクションパスの間に存在しなくなったオブジェクトに対して呼び出されます。オブジェクトは、通常のファイナライザーを実行して、ハンドルがリークまたはリサイクルされることなく、既存のバッファーデータをフラッシュすることができます。クリティカルファイナライザーとクリティカルでないファイナライザーとの間の非常に弱い順序は、一般的な使用を目的としたものではありません。これは主に、既存のライブラリの移行を支援するために存在します。使用できるようにするためです。制約された実行領域に存在する必要があります。これにより、ファイナライザーの呼び出しグラフ内に記述できるコードに制約が課されます。よってカプセル化されたハンドルの参照カウントを自動的にインクリメントし、完了時にデクリメントします。これにより、ハンドルが予期せずリサイクルまたは閉じられることがなくなります。オブジェクトを構築するときに、基になるハンドルの所有権を指定できます。オブジェクトがハンドルを解放するかどうかを制御します。これは、特別な有効期間要件を持つハンドルや、有効期間が他のユーザーによって制御されるハンドルを使用する場合に便利です。オペレーティングシステムハンドルの抽象ラッパークラスです。このクラスからの派生は困難です。名前空間の派生クラスを使用してください。