ICLRTask2 接口

提供 ICLRTask 接口的所有功能;此外,还提供了允许在当前线程上延迟线程中止的方法。

方法

方法 说明
BeginPreventAsyncAbort 方法 延迟当前线程上的新线程中止请求。
EndPreventAsyncAbort 方法 允许新线程或挂起线程中止请求,导致在当前线程上中止线程。

注解

ICLRTask2 接口继承 ICLRTask 接口并添加允许主机延迟线程中止的方法,以保护绝不能失败的代码区域。 调用 BeginPreventAsyncAbort 会递增当前线程的延迟线程中止计数器,并调用 EndPreventAsyncAbort 递减。 对 BeginPreventAsyncAbort 和 EndPreventAsyncAbort 的调用可以嵌套。 只要计数器大于零,就会延迟当前线程的线程中止。

如果对 BeginPreventAsyncAbort 和 EndPreventAsyncAbort 的调用不配对,则可能会达到无法将线程中止传递到当前线程的状态。

此延迟不适用于自行中止的线程。

此功能公开的功能由虚拟机 (VM) 在内部使用。 滥用这些方法可能会导致 VM 中出现未指定的行为。 例如,如果 VM 之前已递增计数器,则在未调用 BeginPreventAsyncAbort 之前调用 EndPreventAsyncAbort 可能将计数器设置为零。 同样,不会检查内部计数器是否溢出。 如果内部计数器由于主机和 VM 对它进行递增而超出它的整数限制,则不指定结果行为。

有关从 ICLRTask 继承成员和此接口其他用法的信息,请参阅 ICLRTask 接口。

要求

平台:请参阅系统要求。

标头:MSCorEE.h

库:作为资源包含在 MSCorEE.dll 中

.NET Framework 版本:自 4 起可用

另请参阅