GattDeviceService是否关闭/处理丢失或未实现?

时间:2018-07-06 21:00:31

标签: c++ bluetooth-lowenergy windows-10-universal

编辑:我正在使用Win 10 SDK版本10.0.17134.0和Visual Studio 2017,以及最新的Windows 10

你好, 我一直在编写代码以使用Windows 10(UWP)低功耗蓝牙API。 我已经注意到,在我的应用程序运行了许多次之后,我的蓝牙在整个系统上都停止工作(需要重新启动)。这种情况通常每天发生一次。我目前的假设是,我没有正确清理应用程序引起的任何分配,并且在Windows Bluetooth LE子系统中遇到了一些内部限制。

查看API,我注意到大多数BLE对象甚至都没有公开清除功能。但是,根据GattDeviceService的文档,它应该公开一个Close()和Dispose()方法...

intellisense同意这一点,它显示Close()和Dispose()方法的自动完成功能。

但是,调用任何一个并进行编译都会导致类似

的错误
  

错误C2039“关闭”:不是的成员   'Windows :: Devices :: Bluetooth :: GenericAttributeProfile :: GattDeviceService'

我花了很多时间查看Windows 10 BLE API的示例代码和Google结果...此时,我只是假设它是不完整的?

是否有人知道如何从Windows 10 BLE API调用中正确进行清理,或者是否有可能?

对于相对开放的问题,很抱歉,在这一点上,我什至无法真正确定自己在寻找什么...

编辑:这是一些重现我问题的代码:

auto leDevice = co_await BluetoothLEDevice::FromBluetoothAddressAsync(addr);
Bluetooth::GenericAttributeProfile::GattDeviceServicesResult^ gatt = co_await leDevice->GetGattServicesAsync(BluetoothCacheMode::Uncached);
for (unsigned int i = 0; i < gatt->Services->Size; i++){
    GenericAttributeProfile::GattDeviceService^ service = gatt->Services->GetAt(i);
    auto result = co_await service->OpenAsync(GenericAttributeProfile::GattSharingMode::SharedReadOnly)
    //... do stuff with service / characteristics
    service->Close()
}

我的代码实际上没有OpenAsync行,如果需要的话还可以使用IDK

0 个答案:

没有答案