Я пытаюсь сканировать устройства Bluetooth с помощью библиотеки 32feet.NET, используя следующий код.
private void Button_Click(object sender, RoutedEventArgs e)
{
BluetoothClient client = new BluetoothClient();
foreach (BluetoothDeviceInfo bdi in client.DiscoverDevices())
{
System.Diagnostics.Debug.WriteLine(bdi.DeviceName + " " + bdi.DeviceAddress);
}
}
Приведенный выше код возвращает список доступных устройств Bluetooth в приложении WPF. Но когда я использую тот же код в приложении UWP, я получаю следующее исключение.
System.Runtime.InteropServices.COMException: 'Метод был вызван в непредвиденное время.
Когда я попытался использовать async/await в соответствии с предложением, данным здесь, чтобы исправить это исключение, я не могу использовать async/await в коллекциях. Поэтому я использовал метод Task.FromResult, как показано ниже, и исключение не исправлено.
private async void Button_Click(object sender, RoutedEventArgs e)
{
BluetoothClient client = new BluetoothClient();
var dev = await Task.FromResult(client.DiscoverDevices());
foreach (BluetoothDeviceInfo bdi in dev)
{
System.Diagnostics.Debug.WriteLine(bdi.DeviceName + " " + bdi.DeviceAddress);
}
}
Может ли кто-нибудь помочь мне, почему тот же код работает в приложении WPF, но не в приложении UWP?