ICLRTask2 接口

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

方法

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

注解

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

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

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

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

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

要求

平台:请参阅系统要求

标头:MSCorEE.h

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

.NET Framework 版本:自 4 起可用

另请参阅