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 起可用

另请参阅