You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.8中GetGattServicesAsync无限挂起问题求助

.NET Framework 4.8 WPF应用BLE连接随机卡在GetGattServicesAsync方法

环境信息

  • 应用类型:基于.NET Framework 4.8的WPF应用
  • 依赖包:
    • Microsoft.Windows.SDK.Contracts 版本10.0.22000.196
    • System.Runtime.WindowsRuntime 版本4.6.0
  • 开发环境:Visual Studio 2022 17.6.1
  • 问题复现环境:两台Windows 11 22H2(系统版本2261.2283)设备

使用场景

  1. 扫描BLE设备,用户选择1-4台设备进行连接
  2. 读取设备上的识别数据后立即断开连接
  3. 按照用户设定的时间间隔,重复执行「连接→获取数据→断开」的流程
  4. 每台设备的连接流程通过Task.Run提交到线程池,避免阻塞UI线程
  5. 目标设备使用自定义BLE服务(无官方SIG UUID)

问题现象

整体流程运行正常,但在上述两台Windows 11设备上,会随机出现连接流程卡住的情况,具体卡在以下代码行:

var gatt = await _bleDevice.GetGattServicesAsync(BluetoothCacheMode.Uncached);

该异步方法永不返回/完成,触发时间无规律,可能在运行20分钟后出现,也可能在9天后才触发。

抓包分析显示:正常情况下,此阶段Microsoft-BT-Stack会与设备交换MTU大小信息,再发送带有GATT主服务声明UUID的Read By Group Type Request以获取服务,但异常时这些步骤完全未执行。

已尝试的排查动作

  • 更换过不同的BLE设备
  • 测试过1台、2台、3台、4台设备的不同连接组合
  • 更换过不同型号的蓝牙适配器
  • 正在测试更新后的依赖包:Microsoft.Windows.SDK.Contracts 10.0.2261.755 和 System.Runtime.WindowsRuntime 4.7.0

求助

有没有人遇到过类似的问题?是否有可行的解决方法或排查方向?

内容的提问来源于stack exchange,提问作者Internetandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:08:05