FromBluetoothAddressAsync IAsyncOperation不包含"GetAwaiter"错误的定义

kwa*_*gjj 9 c# bluetooth async-await

我正在研究一个简单的流行语.我一直在提到这段代码

我在视觉工作室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);

            }


    }
Run Code Online (Sandbox Code Playgroud)

在该行中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 <>的子级吗?

我将不胜感激任何帮助来解决这个错误.

Kev*_*sse 20

等待一个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包,它将为您完成工作.


Mar*_*rek 17

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

using System;

//...

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