.netstandard库和UniversalApiContract

时间:2017-05-04 10:06:45

标签: c# asynchronous uwp portable-class-library .net-standard

我正在构建一个 .NETStandard 库(版本1.3), 在库中使用async await工作正常,直到我添加对 Windows.Foundation.UniversalApiContract 的引用。 添加此引用后,我的代码中的每个await关键字都会出错

这是错误

  

' IAsyncAction'不包含' GetAwaiter'的定义和不   扩展方法' GetAwaiter'接受第一个类型的参数   ' IAsyncAction'可以找到

这是我需要运行的代码

await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { OnUserChanged?.Invoke(user); });

删除等待关键字导致工作代码,但我收到此警告

  

因为没有等待此调用,所以执行当前方法   在通话结束前继续。考虑应用“等待”#39;   运算符到调用的结果。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

确保代码文件顶部有using System;。这具有将IAsyncAction转换为Task所需的扩展名。

如果这不起作用,请尝试此语句(只是为了查看代码是否编译并运行):

var a = CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { OnUserChanged?.Invoke(user); });

await System.WindowsRuntimeSystemExtensions.AsTask(a);

如果上述内容对您不起作用,请尝试暂时升级到.Net Standard 1.4(再次,只是为了查看它是否编译并运行)

如果这不起作用,那么可能会有一些与图书馆参考混淆的东西。