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