Не удается обнаружить устройства Bluetooth в приложении UWP, но работает в приложении WPF

Я пытаюсь сканировать устройства 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?


person Kumar M    schedule 04.12.2020    source источник


Ответы (1)


Не удается обнаружить устройства Bluetooth в приложении UWP, но работает в приложении WPF

Я боюсь, что третья часть библиотеки не поддерживает платформу UWP. Если вы хотите обнаружить устройство Bluetooth на платформе UWP, мы предлагаем вам использовать DeviceWatcher для перечисления всех устройств Bluetooth.

Здесь приведен официальный пример кода, на который вы можете ссылаться и здесь — официальный документ.

person Nico Zhu - MSFT    schedule 04.12.2020