EClrOperation 列挙型

ホストでポリシー アクションを適用できる操作のセットについて説明します。

構文

typedef enum {  
    OPR_ThreadAbort,  
    OPR_ThreadRudeAbortInNonCriticalRegion,  
    OPR_ThreadRudeAbortInCriticalRegion,  
    OPR_AppDomainUnload,  
    OPR_AppDomainRudeUnload,  
    OPR_ProcessExit,  
    OPR_FinalizerRun  
} EClrOperation;  

メンバー

メンバー 説明
OPR_AppDomainRudeUnload AppDomain が正常でない (ルード) 状態でアンロードされたときに実行されるポリシー アクションをホストで指定できます。
OPR_AppDomainUnload AppDomain がアンロードされたときに実行されるポリシー アクションをホストで指定できます。
OPR_FinalizerRun ファイナライザーの実行時に実行されるポリシー アクションをホストで指定できます。
OPR_ProcessExit プロセスが存在するときに実行されるポリシー アクションをホストで指定できます。
OPR_ThreadAbort スレッドが中止されたときに実行されるポリシー アクションをホストで指定できます。
OPR_ThreadRudeAbortInCriticalRegion クリティカルなコード領域でルード スレッドの中止が発生したときに実行されるポリシー アクションをホストで指定できます。
OPR_ThreadRudeAbortInNonCriticalRegion クリティカルでないコード領域でルード スレッドの中止が発生したときに実行されるポリシー アクションをホストで指定できます。

解説

共通言語ランタイム (CLR) の信頼性インフラストラクチャでは、クリティカルなコード領域で発生する中止およびリソース割り当ての失敗と、クリティカルでないコード領域で発生する中止およびリソース割り当ての失敗が区別されます。 このように区別する目的は、コード内で失敗が発生した場所に応じて、さまざまなポリシーをホストで設定できるようにすることです。

"クリティカルなコード領域" とは、タスクの中止やリソース要求の完了の失敗によって現在のタスクのみが影響を受けることが CLR で保証されない領域です。 たとえば、タスクでロックが保持され、メモリ割り当ての要求に失敗したことを示す HRESULT が受け取られると、同じロックを待機している他のタスクが AppDomain に含まれている可能性があるため、AppDomain の安定性を保証するには、単にそのタスクを中止するだけでは不十分です。 現在のタスクを破棄すると、他のタスクで応答が停止される可能性があります。 このような場合は、リスク ポテンシャル不安定ではなく、AppDomain 全体をアンロードする機能がホストに必要です。

一方、"クリティカルでないコード領域" とは、中止や失敗によって発生したタスクのみが影響を受けることを CLR で保証できる領域です。

また、CLR では正常な中止と正常でない (ルード) 中止が区別されます。 一般に、通常の中止や正常な中止では、タスクを中止する前に例外処理ルーチンとファイナライザーを実行するために、あらゆる努力が行われますが、ルード中止では、このような保証はありません。

必要条件

:システム要件」を参照してください。

ヘッダー: MSCorEE.h

ライブラリ: MSCorEE.dll

.NET Framework のバージョン: 2.0 以降で使用可能

関連項目