ICLRTask 接口

提供让主机能够发出公共语言运行时 (CLR) 请求或向 CLR 提供有关关联任务的通知的方法。

方法

方法 说明
Abort 方法 请求 CLR 中止当前 ICLRTask 实例表示的任务。
ExitTask 方法 向 CLR 通知与当前 ICLRTask 实例关联的任务正在结束,并尝试正常关闭该任务。
GetMemStats 方法 获取有关当前 ICLRTask 实例所表示的任务的内存资源使用情况的统计信息。
LocksHeld 方法 获取任务中当前持有的锁数。
NeedsPriorityScheduling 方法 获取一个值,用于指示主机是否应分配一个高优先级来重新计划当前 ICLRTask 实例表示的任务。
Reset 方法 向 CLR 告知主机已完成任务,并使 CLR 能够重用当前 ICLRTask 实例来表示另一个任务。
RudeAbort 方法 使 CLR 立即中止当前 ICLRTask 实例表示的任务,且不保证执行终结器。
SetTaskIdentifier 方法 为当前 ICLRTask 实例表示的任务设置唯一标识符以用于调试。
SwitchIn 方法 通知 CLR 当前 ICLRTask 实例表示的任务处于可操作状态。
SwitchOut 方法 通知 CLR 当前 ICLRTask 实例表示的任务不再处于可操作状态。
YieldTask 方法 请求 CLR 将处理器时间提供给其他任务。 CLR 不保证将任务置于可生成处理时间的状态。

备注

ICLRTask 是 CLR 的任务表示形式。 在代码执行期间的任意时点,可将任务描述为正在运行或等待运行。 主机调用 ICLRTask::SwitchIn 方法来通知 CLR 当前 ICLRTask 实例表示的任务现在处于可操作状态。 调用 ICLRTask::SwitchIn 后,主机可以在任何操作系统线程上计划任务,除非运行时需要通过调用 IHostTaskManager::BeginThreadAffinityIHostTaskManager::EndThreadAffinity 方法指定的线程亲和性。 在一段时间后,操作系统可以确定从该线程中删除该任务,并将其置于非运行中状态。 例如,每当任务在同步基元上阻塞或等待 I/O 操作完成时,就会发生这种情况。 主机调用 SwitchOut 以通知 CLR 当前 ICLRTask 实例表示的任务不再处于可操作状态。

任务通常会在代码执行结束时终止。 此时,主机将调用 ICLRTask::ExitTask 来销毁关联的 ICLRTask。 但是,也可以使用 ICLRTask::Reset 调用来回收任务,这样就可以再次使用 ICLRTask 实例。 这种方法可以防止重复创建和销毁实例所产生的开销。

要求

平台:请参阅系统要求

标头:MSCorEE.h

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

.NET Framework 版本:自 2.0 起可用

请参阅