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::BeginThreadAffinity 和 IHostTaskManager::EndThreadAffinity 方法指定的线程亲和性。 在一段时间后,操作系统可以确定从该线程中删除该任务,并将其置于非运行中状态。 例如,每当任务在同步基元上阻塞或等待 I/O 操作完成时,就会发生这种情况。 主机调用 SwitchOut 以通知 CLR 当前 ICLRTask
实例表示的任务不再处于可操作状态。
任务通常会在代码执行结束时终止。 此时,主机将调用 ICLRTask::ExitTask
来销毁关联的 ICLRTask
。 但是,也可以使用 ICLRTask::Reset
调用来回收任务,这样就可以再次使用 ICLRTask
实例。 这种方法可以防止重复创建和销毁实例所产生的开销。
要求
平台:请参阅系统要求。
标头:MSCorEE.h
库:作为资源包含在 MSCorEE.dll 中
.NET Framework 版本:自 2.0 起可用