EClrOperation Enumeration
Describes the set of operations for which a host can apply policy actions.
Syntax
typedef enum {
OPR_ThreadAbort,
OPR_ThreadRudeAbortInNonCriticalRegion,
OPR_ThreadRudeAbortInCriticalRegion,
OPR_AppDomainUnload,
OPR_AppDomainRudeUnload,
OPR_ProcessExit,
OPR_FinalizerRun
} EClrOperation;
Members
Member | Description |
---|---|
OPR_AppDomainRudeUnload |
The host can specify policy actions to be taken when an AppDomain is unloaded in a non-graceful (rude) manner. |
OPR_AppDomainUnload |
The host can specify policy actions to be taken when an AppDomain is unloaded. |
OPR_FinalizerRun |
The host can specify policy actions to be taken when finalizers run. |
OPR_ProcessExit |
The host can specify policy actions to be taken when the process exits. |
OPR_ThreadAbort |
The host can specify policy actions to be taken when a thread is aborted. |
OPR_ThreadRudeAbortInCriticalRegion |
The host can specify policy actions to be taken when a rude thread abort occurs in a critical region of code. |
OPR_ThreadRudeAbortInNonCriticalRegion |
The host can specify policy actions to be take when a rude thread abort occurs in a non-critical region of code. |
Remarks
The common language runtime (CLR) reliability infrastructure distinguishes between aborts and resource allocation failures that occur in critical regions of code and those that occur in non-critical regions of code. This distinction is designed to allow hosts to set different policies depending on where a failure occurs in the code.
A critical region of code is any space where the CLR cannot guarantee that aborting a task or failing to complete a request for resources will affect only the current task. For example, if a task is holding a lock and receives an HRESULT that indicates failure upon making a memory allocation request, it is insufficient simply to abort that task to ensure the stability of the AppDomain, because the AppDomain might contain other tasks waiting for the same lock. To abandon the current task might cause those other tasks to stop responding. In such a case, the host needs the ability to unload the entire AppDomain rather than risk potential instability.
A non-critical region of code, on the other hand, is a region where the CLR can guarantee that an abort or a failure will affect only the task upon which the error occurs.
The CLR also distinguishes between graceful and non-graceful (rude) aborts. In general, a normal or graceful abort makes every effort to run exception-handling routines and finalizers before aborting a task, while a rude abort makes no such guarantees.
Requirements
Platforms: See System Requirements.
Header: MSCorEE.h
Library: MSCorEE.dll
.NET Framework Versions: Available since 2.0