我尝试定义一个返回任务的界面
interface MyInterface : IUnknown
{
HRESULT myFunction(
[out, retval] System.Threading.Tasks.Task task);
}
这给了我一个例外,说明'期望类型规范接近"任务"'
答案 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。