IHostTaskManager::LeaveRuntime 方法

通知宿主当前正在执行的任务即将离开公共语言运行时 (CLR) 并进入非托管代码。

重要说明重要事项

一个对应的 IHostTaskManager::EnterRuntime 调用将通知宿主当前正在执行的任务正在重新进入托管代码。

HRESULT LeaveRuntime (
    [in] SIZE_T target
);

参数

  • target
    [in] 要调用的非托管函数的映射可迁移可执行文件中的地址。

返回值

HRESULT

说明

S_OK

LeaveRuntime 已成功返回。

HOST_E_CLRNOTAVAILABLE

CLR 尚未加载到进程中或者处于无法运行托管代码或成功处理调用的状态。

HOST_E_TIMEOUT

调用超时。

HOST_E_NOT_OWNER

调用方不拥有锁。

HOST_E_ABANDONED

事件在被阻止的线程或纤程正在等待它时被取消。

E_FAIL

发生了未知的灾难性故障。 如果某方法返回 E_FAIL,CLR 便无法再在进程中使用。 对宿主方法的后续调用都将返回 HOST_E_CLRNOTAVAILABLE。

E_OUTOFMEMORY

没有可用于完成请求分配的足够内存。

备注

来往于非托管代码的调用序列可以嵌套。 例如,下面的列表描述了一个假想的场景,其中对 LeaveRuntimeIHostTaskManager::ReverseEnterRuntimeIHostTaskManager::ReverseLeaveRuntimeIHostTaskManager::EnterRuntime 的调用序列使宿主能够识别嵌套的层。

操作

对应的方法调用

托管的 Visual Basic 可执行文件使用平台调用来调用用 C 编写的非托管函数。

IHostTaskManager::LeaveRuntime

非托管的 C 函数调用以 C# 编写的托管 DLL 中的方法。

IHostTaskManager::ReverseEnterRuntime

托管的 C# 函数同样使用平台调用来调用用 C 编写的另一个非托管函数。

IHostTaskManager::LeaveRuntime

第二个非托管的函数将执行返回到该 C# 函数。

IHostTaskManager::EnterRuntime

该 C# 函数将执行返回第一个非托管的函数。

IHostTaskManager::ReverseLeaveRuntime

第一个非托管的函数将执行返回 Visual Basic 程序。

IHostTaskManager::EnterRuntime

要求

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

**头文件:**MSCorEE.h

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

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

请参见

参考

ICLRTask 接口

ICLRTaskManager 接口

IHostTask 接口

IHostTaskManager 接口