我正在尝试在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 ++ /托管类,如何创建返回任务的方法
答案 0 :(得分:2)
您无法使用async
/ await
,但您确实可以使用以下选项。
如果要将方法实现为真正的异步方法,则需要直接使用任务并行库。我最近创建的Threading Library包括几种方法,可以以异步方式简化编程语言结构的实现,而无需使用async
/ await
。我为此目的创建了库,但在实现中强调了C#/ VB代码(在很多地方使用了委托)。
如果要同步实现该方法,可以使用Task.FromResult
将已设置Task<TResult>
属性的已完成Result
实例返回到方法的返回值。