ICLRPolicyManager::SetActionOnTimeout 方法
指定在指定操作超时时公共语言运行时 (CLR) 应执行的策略操作。
语法
HRESULT SetActionOnTimeout (
[in] EClrOperation operation,
[in] EPolicyAction action
);
参数
operation
[in] EClrOperation 值之一,指示要为其指定超时操作的操作。 支持以下值:
OPR_AppDomainUnload
OPR_ProcessExit
OPR_ThreadRudeAbortInCriticalRegion
OPR_ThreadRudeAbortInNonCriticalRegion
action
[in] EPolicyAction 值之一,指示在操作超时时要执行的策略操作。
返回值
HRESULT | 说明 |
---|---|
S_OK | 已成功返回 SetActionOnTimeout 。 |
HOST_E_CLRNOTAVAILABLE | CLR 未加载到进程中,或 CLR 处于无法运行托管代码或无法成功处理调用的状态。 |
HOST_E_TIMEOUT | 调用超时。 |
HOST_E_NOT_OWNER | 调用方未持有锁。 |
HOST_E_ABANDONED | 阻塞的线程或纤程正在等待某一事件,而该事件已被取消。 |
E_FAIL | 发生未知的灾难性故障。 某方法返回 E_FAIL 后,进程中无法再使用 CLR。 后续调用承载方法会返回 HOST_E_CLRNOTAVAILABLE。 |
E_INVALIDARG | 无法为指定 operation 设置超时,或者为 operation 提供了无效值。 |
备注
超时值可以是 CLR 设置的默认超时值,或者是主机在调用 ICLRPolicyManager::SetTimeout 方法时指定的值。
并非所有策略操作值都可以指定为 CLR 操作的超时行为。 SetActionOnTimeout
通常仅用于升级行为。 例如,主机可以指定将线程中止转换为强制线程中止,但不能指定相反操作。 下表描述了有效 operation
值的有效 action
值。
operation 的值 |
action 的有效值 |
---|---|
OPR_ThreadRudeAbortInNonCriticalRegion OPR_ThreadRudeAbortInCriticalRegion |
- eRudeAbortThread - eUnloadAppDomain - eRudeUnloadAppDomain - eExitProcess - eFastExitProcess - eRudeExitProcess - eDisableRuntime |
OPR_AppDomainUnload | - eUnloadAppDomain - eRudeUnloadAppDomain - eExitProcess - eFastExitProcess - eRudeExitProcess - eDisableRuntime |
OPR_ProcessExit | - eExitProcess - eFastExitProcess - eRudeExitProcess - eDisableRuntime |
要求
平台:请参阅系统要求。
标头:MSCorEE.h
库:作为资源包含在 MSCorEE.dll 中
.NET Framework 版本:自 2.0 起可用