Interface 如何在idl文件中定义返回任务的接口
我正在尝试定义一个返回任务的接口Interface 如何在idl文件中定义返回任务的接口,interface,idl,Interface,Idl,我正在尝试定义一个返回任务的接口 interface MyInterface : IUnknown { HRESULT myFunction( [out, retval] System.Threading.Tasks.Task task); } 这给了我一个例外,说“期望在“Task”附近有一个类型规范”COM/MIDL对.NET类一无所知,例如Task,因为这些技术是不同的,而且COM早于.NET。您打算让服务器创建并执行任务,而客户端(可能在不同的进程中,可能不是
interface MyInterface : IUnknown
{
HRESULT myFunction(
[out, retval] System.Threading.Tasks.Task task);
}
这给了我一个例外,说“期望在“Task”附近有一个类型规范”COM/MIDL对.NET类一无所知,例如
Task
,因为这些技术是不同的,而且COM早于.NET。您打算让服务器创建并执行任务
,而客户端(可能在不同的进程中,可能不是.NET程序)可以访问该任务吗?然后,任务应该有一个COM接口,带有相关的代理和存根实现,用于在进程之间封送方法参数和结果。阅读COM和“COM Iterop”。此外,IDL还需要定义或导入此类接口的定义
根据您的需要,现有的接口
IAsyncResult
可能就足够了。它由Task
实现,并标记为ComVisibleAttribute(true)
。它的COM类型定义似乎在mscorlib.tlb中。您可能需要使用OleView.exe生成相应的IDL。COM/MIDL对.NET类一无所知,例如Task
,因为这些技术是不同的,COM早于.NET。您打算让服务器创建并执行任务
,而客户端(可能在不同的进程中,可能不是.NET程序)可以访问该任务吗?然后,任务应该有一个COM接口,带有相关的代理和存根实现,用于在进程之间封送方法参数和结果。阅读COM和“COM Iterop”。此外,IDL还需要定义或导入此类接口的定义
根据您的需要,现有的接口IAsyncResult
可能就足够了。它由Task
实现,并标记为ComVisibleAttribute(true)
。它的COM类型定义似乎在mscorlib.tlb中。您可能需要使用OleView.exe生成相应的IDL