FromBluetoothAddressAsync IAsyncOperation不包含' GetAwaiter'的定义。错误

时间:2017-05-21 16:49:29

标签: c# bluetooth async-await

我正在研究一个简单的流行语。我指的是code

我在2017年的视觉工作室工作。

我的核心代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Threading;


using Windows.Devices.Bluetooth.Advertisement;
using Windows.Devices.Bluetooth;
using Windows.Devices;
using Windows.Foundation;
using Windows;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {

        private BluetoothLEAdvertisementWatcher watcher;

        public Form1()
        {

            InitializeComponent();
            watcher = new BluetoothLEAdvertisementWatcher();

            watcher.Received += OnAdvertisementReceived;
        }

        private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
        {
            var dev = await BluetoothLEDevice.FromBluetoothAddressAsync(eventArgs.BluetoothAddress);

            }


    }

var dev = await BluetoothLEDevice.FromBluetoothAddressAsync(eventArgs.BluetoothAddress)行中,它会给出错误

  

IAsyncOperation不包含。的定义   ' GetAwaiter'和最好的扩展方法重载   ' windowsRuntimeSystemExtensions.GetAwaiter(IAsyncAction)'需要一个   接收器类型为'IAsyncAction'

我已尝试添加对System.Runtime',' System.Runtime.WindowsRuntime'的引用。 ,' Windows'但是这个错误仍然存​​在。

从我的谷歌搜索,原因似乎是方法' FromBluetoothAddressAsync'应该返回一个任务。

msdn,我可以查看' FromBluetoothAddressAsync'方法具有以下结构

  

public static IAsyncOperation   FromBluetoothAddressAsync(UInt64 bluetoothAddress,   BluetoothAddressType bluetoothAddressType)

这意味着它返回IAsyncOperation。我看待它的方式,这似乎足以被认为是一个任务<>。

问题是由于链接断开导致sIAsyncOperation<>被认可为Task<>的孩子?

我很感激有任何帮助来解决这个错误。

3 个答案:

答案 0 :(得分:16)

等待IAsyncOperation,您需要做两件事:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll
  • 的引用
  • C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Facade\Windows.WinMD
  • 的引用

如果缺少任何一个参考,那么它将无效。您也可以使用UwpDesktop nuget包,它将为您完成工作。

答案 1 :(得分:12)

对于其他一些UWP操作,只需添加using System

using System;

//...

// example - getting file reference:
var file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("myFile.txt);

答案 2 :(得分:0)