实现在cli / c ++中返回任务的Async / Await方法?

时间:2014-05-27 16:40:09

标签: c# c++ asynchronous

我正在尝试在cli / cpp托管代码中实现c#类的接口。

界面看起来像这样:

public interface IManagedAlgorithmHost<TOptions,TResult> : IManagedAlgorithmHost
{
    Task<TResult> RunAlgorithmAsync();
    void SetAlgorithmContext(IManagedAlgorithmContext<TOptions> context);  
}

我想出了如何将dll及其导入到我的cli / cpp项目中,但我无法确定它是否可以在托管c ++中创建实现RunAlgorithmAsync方法的类。

public ref class MyAlgHost
{
}

如何使用接口扩展上述c ++ /托管类,如何创建返回任务的方法

1 个答案:

答案 0 :(得分:2)

您无法使用async / await,但您确实可以使用以下选项。

  1. 如果要将方法实现为真正的异步方法,则需要直接使用任务并行库。我最近创建的Threading Library包括几种方法,可以以异步方式简化编程语言结构的实现,而无需使用async / await。我为此目的创建了库,但在实现中强调了C#/ VB代码(在很多地方使用了委托)。

  2. 如果要同步实现该方法,可以使用Task.FromResult将已设置Task<TResult>属性的已完成Result实例返回到方法的返回值。