错误:await要求类型具有合适的GetAwaiter方法

时间:2015-01-03 19:37:45

标签: c# .net bluetooth windows-runtime async-await

我已经将同一段代码从一个项目复制到另一个项目,在第一个项目中它编译得很好,但在第二个项目中它没有。

这篇文章是:

using Windows.Devices.Bluetooth;
// a couple of lines of other code
var rfcommProvider = await RfcommServiceProvider.CreateAsync(RfcommServiceId.FromUuid(RfcommChatServiceUuid));

错误:

'await' requires that the type 'Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider>' have a suitable GetAwaiter method. Are you missing a using directive for 'System'? 

第一个项目是由Microsoft创建的演示,它是一个Windows 8.1应用程序。

我的应用程序是一个普通的WPF应用程序,它的目标是.NET 4.5.1和Windows 8.1,我添加了Windows.winmd的引用,如here所述

我不知道为什么同一段代码可能在一个应用程序中编译而在另一个应用程序中编译时,如引用,命名空间等所有常见内容都可以。我唯一的想法是,我可能会引用一些尚未等待的旧版本,但我不知道如何验证这一点。

1 个答案:

答案 0 :(得分:6)

错误是IAsyncOperation没有GetAwaiter方法。它存在于System.Runtime.WindowsRuntime.dll中,您需要添加它作为参考,因为您在.Net环境中使用WinRT代码:

System.Runtime.WindowsRuntime.dll

How to use specific WinRT API from Desktop apps

中的更多内容