GattDeviceService 关闭/处置缺失或未实现?

问题描述 投票:0回答:1

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

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

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

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

但是,调用其中一个并编译会导致类似

的错误

错误 C2039“关闭”:不是以下成员 'Windows::设备::蓝牙::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

c++ bluetooth-lowenergy windows-10-universal
1个回答
0
投票

我发现

service->Close()
service->Dispose()
不起作用,即使它们出现在文档中。然而,做
delete service
似乎对我来说效果很好,并且似乎有相同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.