如何在idl文件中定义一个返回Task的接口

时间:2016-06-19 23:20:45

标签: interface idl

我尝试定义一个返回任务的界面

interface MyInterface : IUnknown
{
    HRESULT myFunction(
        [out, retval] System.Threading.Tasks.Task task);

}

这给了我一个例外,说明'期望类型规范接近"任务"'

1 个答案:

答案 0 :(得分:0)

COM / MIDL对Task等.NET类一无所知,因为技术是独特的,COM早于.NET。您打算服务器将创建并执行Task,而客户端(可能在不同的进程中,可能不是.NET程序)将可以访问该任务?然后应该有一个 COM 接口来完成任务,其中包含相关的代理和存根实现,用于编组方法参数和进程之间的结果。阅读COM和" COM Iterop"。此外,您的IDL需要定义或import此类接口的定义。

根据您的需要,现有界面IAsyncResult可能就足够了。它由Task实施,并标记为ComVisibleAttribute(true)。它的COM类型定义似乎在mscorlib.tlb中。您可能需要使用OleView.exe生成相应的IDL。