ICLRTask

更新:2007 年 11 月

提供一些方法,这些方法允许宿主发出公共语言运行库 (CLR) 请求,或者向 CLR 提供有关相关联任务的通知。

interface ICLRTask : IUnknown {
    HRESULT Abort ();
    HRESULT ExitTask ();
    HRESULT GetMemStats (
        [out] COR_GC_THREAD_STATS *pMemUsage
    );
    HRESULT LocksHeld (
        [out] SIZE_T *pLockCount
    );
    HRESULT NeedsPriorityScheduling (
        [out] BOOL *pbNeedsPriorityScheduling
    );
    HRESULT Reset (
        [in] BOOL fFull
    );
    HRESULT RudeAbort ();
    HRESULT SetTaskIdentifier (
        [in] DWORD asked
    );
    HRESULT SwitchIn (
        [in] HANDLE threadHandle
    );
    HRESULT SwitchOut ();
    HRESULT YieldTask ();
}

方法

方法

说明

ICLRTask::Abort 方法

请求 CLR 中止当前 ICLRTask 实例表示的任务。

ICLRTask::ExitTask 方法

通知 CLR 与当前 ICLRTask 实例关联的任务即将结束,并尝试正常关闭该任务。

ICLRTask::GetMemStats 方法

获取有关当前 ICLRTask 实例表示的任务的内存资源使用情况的统计信息。

ICLRTask::LocksHeld 方法

获取任务当前持有的锁的数量。

ICLRTask::NeedsPriorityScheduling 方法

获取一个值,该值指示主机是否应为重新安排由当前 ICLRTask 实例表示的任务分配一个高优先级。

ICLRTask::Reset 方法

通知 CLR 宿主已完成一个任务,并使 CLR 重用当前的 ICLRTask 实例以表示其他任务。

ICLRTask::RudeAbort 方法

使 CLR 立即中止由当前 ICLRTask 实例表示的任务,但不会保证将执行终结器。

ICLRTask::SetTaskIdentifier 方法

为当前 ICLRTask 实例表示的任务设置唯一的标识符,以便在调试中使用。

ICLRTask::SwitchIn 方法

通知 CLR 由当前 ICLRTask 实例表示的任务处于可操作状态。

ICLRTask::SwitchOut 方法

通知 CLR 由当前 ICLRTask 实例表示的任务不再处于可操作状态。

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 实例。此方法可避免重复创建和销毁实例的系统开销。

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**MSCorEE.idl

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

**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

请参见

参考

ICLRTaskManager

IHostTask

IHostTaskManager

其他资源

宿主接口