首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在UWP应用程序中找到蓝牙设备,而在WPF应用程序中工作

无法在UWP应用程序中找到蓝牙设备,而在WPF应用程序中工作
EN

Stack Overflow用户
提问于 2020-12-04 12:34:26
回答 2查看 233关注 0票数 1

我正在尝试使用以下代码使用32feet.NET库扫描蓝牙设备。

代码语言:javascript
复制
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);
    }
}

以上代码返回WPF应用程序中可用蓝牙设备的列表。但是,当我在UWP应用程序中使用相同的代码时,我将得到以下异常。

System.Runtime.InteropServices.COMException:‘一个方法在一个意想不到的时间被调用.

当我试图按照给出的这里修复此异常的建议使用异步/等待时,我无法在集合中使用异步/等待。所以我使用了Task.FromResult方法,如下所示,异常也不是固定的。

代码语言:javascript
复制
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应用程序中不工作吗?

EN

回答 2

Stack Overflow用户

发布于 2020-12-04 13:19:31

无法在UWP应用程序中找到蓝牙设备,而在WPF应用程序中工作

恐怕第三部分库不支持UWP平台,如果您想在UWP平台中发现蓝牙设备,我们建议您使用DeviceWatcher类来枚举所有蓝牙设备。

这里是您可以参考的官方代码示例,而这里是正式文档。

票数 0
EN

Stack Overflow用户

发布于 2022-11-11 22:52:46

UWP应用程序被封装(沙箱)。这意味着UWP应用程序不能直接与内核和操作系统的其他部分通信。UWP应用程序与操作系统通信的唯一方法是通过Windows 10/11 API调用。

示例:await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings"));

有几种解决办法,一个值得注意的例子是在WPF应用程序中下载UWP SDK并在相应的WPF应用程序中使用UWP库。

看这里:https://www.thomasclaudiushuber.com/2019/04/26/calling-windows-10-apis-from-your-wpf-application/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65143649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档