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