【问题标题】:Implementing a Async/Await method returning a task in cli/c++?在 cli/c++ 中实现返回任务的 Async/Await 方法?
【发布时间】:2014-05-27 16:40:08
【问题描述】:

我正在尝试在 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++/托管类以及如何创建返回任务的方法

【问题讨论】:

    标签: c# c++ asynchronous


    【解决方案1】:

    您不能使用async/await,但您可以使用以下选项。

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

    2. 如果你想同步实现方法,你可以使用Task.FromResult返回一个完整的Task&lt;TResult&gt;实例,并将Result属性设置为你方法的返回值。

      李>

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多