EClrOperation 列挙型
ホストがポリシー アクションを適用できる操作セットを示します。
typedef enum {
OPR_ThreadAbort,
OPR_ThreadRudeAbortInNonCriticalRegion,
OPR_ThreadRudeAbortInCriticalRegion,
OPR_AppDomainUnload,
OPR_AppDomainRudeUnload,
OPR_ProcessExit,
OPR_FinalizerRun
} EClrOperation;
メンバー
メンバー |
説明 |
---|---|
OPR_AppDomainRudeUnload |
ホストは、AppDomain が正常ではない (rude な) 方法でアンロードされるときに実行されるポリシー アクションを指定できます。 |
OPR_AppDomainUnload |
ホストは、AppDomain がアンロードされるときに実行されるポリシー アクションを指定できます。 |
OPR_FinalizerRun |
ホストは、ファイナライザーが動作するときに実行されるポリシー アクションを指定できます。 |
OPR_ProcessExit |
ホストは、プロセスが終了するときに実行されるポリシー アクションを指定できます。 |
OPR_ThreadAbort |
ホストは、スレッドが中止されるときに実行されるポリシー アクションを指定できます。 |
OPR_ThreadRudeAbortInCriticalRegion |
ホストは、コード内の重要な領域でスレッドの rude な中止が発生したときに実行されるポリシー アクションを指定できます。 |
OPR_ThreadRudeAbortInNonCriticalRegion |
ホストは、コード内の重要ではない領域でスレッドの rude な中止が発生したときに実行されるポリシー アクションを指定できます。 |
解説
共通言語ランタイム (CLR) の信頼性インフラストラクチャは、中止とリソース割り当てエラーを、コード内の重要な領域と重要ではない領域のどちらで発生したかで区別します。 この区別があるのは、コード内のエラーが発生した箇所に応じて、ホストが異なるポリシーを設定できるようにするためです。
コード内の重要な領域とは、タスクの中止またはリソースに対する要求の失敗の影響が現在のタスクだけにとどまることを CLR で保証できない領域です。 たとえば、タスクがロックを保持している際に、メモリ割り当て要求で失敗を示す HRESULT を受け取った場合、AppDomain の安定性を維持するには、単にそのタスクを中止するだけでは不十分です。これは、AppDomain に、同じロックを待っている他のタスクが存在する可能性があるからです。 このような他のタスクが、現在のタスクの中止によって際限なく応答を停止 (ハングアップ) する可能性があります。 このような場合、不安定になりやすいリスクを避けて AppDomain 全体をアンロードすることを決定する機能がホストに必要です。
一方、コード内の重要ではない領域とは、CLR が、中止または失敗の影響はエラーが発生しているタスクだけに限られることを保証できる領域です。
CLR は、正常な中止と正常ではない (rude な) 中止も区別します。 一般に、正常または適切な中止では、タスクを中止する前に、可能な限り例外処理ルーチンおよびファイナライザーを実行しようとします。一方、rude な中止ではそのような保証はありません。
必要条件
プラットフォーム: 「.NET Framework システム要件」を参照
ヘッダー : MSCorEE.h
ライブラリ: MSCorEE.dll
.NET Framework のバージョン: 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0