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 还会对正常中止和非正常(强制)中止加以区分。 一般来说,正常中止会在中止任务前尽量运行异常处理例程和终结器,而强制中止则没有这样的保证。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**MSCorEE.h
**库:**MSCorEE.dll
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0