.NET Framework 4.8中GetGattServicesAsync无限挂起问题求助
.NET Framework 4.8 WPF应用BLE连接随机卡在GetGattServicesAsync方法
环境信息
- 应用类型:基于.NET Framework 4.8的WPF应用
- 依赖包:
Microsoft.Windows.SDK.Contracts版本10.0.22000.196System.Runtime.WindowsRuntime版本4.6.0
- 开发环境:Visual Studio 2022 17.6.1
- 问题复现环境:两台Windows 11 22H2(系统版本2261.2283)设备
使用场景
- 扫描BLE设备,用户选择1-4台设备进行连接
- 读取设备上的识别数据后立即断开连接
- 按照用户设定的时间间隔,重复执行「连接→获取数据→断开」的流程
- 每台设备的连接流程通过
Task.Run提交到线程池,避免阻塞UI线程 - 目标设备使用自定义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.Contracts10.0.2261.755 和System.Runtime.WindowsRuntime4.7.0
求助
有没有人遇到过类似的问题?是否有可行的解决方法或排查方向?
内容的提问来源于stack exchange,提问作者Internetandi
相关产品推荐
相关产品推荐

