全体として確実に実行する必要がある操作、またはまったく実行しない操作があります。
- 目標は、メモリ内で管理される一部の共有状態の一貫性を維持することだけです。
- これらの状態は、アプリケーション ドメイン内に含まれています。このドメインの外では表示されません。
- したがって、ドメインまたはプロセスが破棄されたときに対応する必要はありません。
- 私はクラス ライブラリを作成しており、ユーザーはどこからでも私のコードを呼び出すことができます。ただし、私のコードはユーザー コードを呼び出しておらず、仮想メソッドも呼び出していません。
- CLR はホストされている場合があります。
私の理解では、次の理由から、制約付き実行領域 (CER) は必要ありません。
OutOfMemoryException
CER は、悪名高い、ThreadAbortException
およびに対してのみ必要ですStackOverflowException
。- 私のコードは割り当てを行わないので、OutOfMemory は気にしません (とにかく、CER 内で割り当てを行ってはなりません)。
- スタック オーバーフローが発生した場合、プロセスはいずれにせよ破棄されます (または、一部のホストされたシナリオではドメイン)。
- スレッドの中止は、finally ブロックが終了するまで既に遅延されており、私のコードは既にブロック内にあります。
私はそれらの点で正しいですか?CER が必要な他の理由はありますか?