我正在研究一个简单的流行语。我指的是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<>的孩子?
我很感激有任何帮助来解决这个错误。
答案 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)
对于“.NET Standard 2.0”库项目,添加以下 Nuget: