C#:蓝牙GATT通信。GattCharacteristic.ValueChanged在一段时间后不会被命中

C#:蓝牙GATT通信。GattCharacteristic.ValueChanged在一段时间后不会被命中,c#,wpf,bluetooth,C#,Wpf,Bluetooth,我正在开发wpf应用程序,它使用GATT进行蓝牙通信。我正在使用GattCharacteristic.ValueChanged来处理来自设备的任何值。它会工作一段时间,事件处理程序在1分钟后不会被调用。此问题在windows 8.1中观察到,但在windows 10中工作 我是GattCharacteristic成员变量,因此GC不收集该变量。问题仍然存在 有人能告诉我这里可能存在什么问题吗 private GattCharacteristic m_DataSenderCharacteristi

我正在开发wpf应用程序,它使用GATT进行蓝牙通信。我正在使用GattCharacteristic.ValueChanged来处理来自设备的任何值。它会工作一段时间,事件处理程序在1分钟后不会被调用。此问题在windows 8.1中观察到,但在windows 10中工作

我是GattCharacteristic成员变量,因此GC不收集该变量。问题仍然存在

有人能告诉我这里可能存在什么问题吗

private GattCharacteristic m_DataSenderCharacteristics;
foreach (var service in serviceInfo)
{
var uuid = MjGattDeviceService.UuidFromServiceInformation(service);
//Battery Service
if (uuid.ToString() == BatteryUUID)
{
    var bService = await GattDeviceService.FromIdAsync(service.Id);
    m_Device.batteryService = bService;
}
if (uuid.ToString() == CustomServiceUUID)
{
    m_Device.gattService = await GattDeviceService.FromIdAsync(service.Id);

    Guid controlGUID = new Guid(ControlUUID);
    var controlGattCharacteristics =      m_Device.gattService.GetCharacteristics(controlGUID);
    Byte[] bsdata = new Byte[] { 0x0b, 0x00, 0x02 };
    IBuffer buffUTF8 = CryptographicBuffer.CreateFromByteArray(bsdata);
    GattCommunicationStatus status = await controlGattCharacteristics[0].WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);

    if (status == GattCommunicationStatus.Unreachable)
    {
        m_Device.isConnected = false;
        nextPage = "Unreachable";
    }
    else if (status == GattCommunicationStatus.Success)
    {
        var ctrlStatus = await controlGattCharacteristics[0].WriteValueAsync(buffUTF8);
        Guid guuid1 = new Guid(DataSenderUUID);
        m_DataSenderCharacteristics = m_Device.gattService.GetCharacteristics(guuid1)[0];

        GattCommunicationStatus notifyStatus = await m_DataSenderCharacteristics.
            WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);                   

        //This event handler will be called for some 1 minute. After it falls dead
        m_DataSenderCharacteristics[0].ValueChanged += GestureValueChanged;
        if (notifyStatus == GattCommunicationStatus.Success)
        {
            nextPage = "Connected";
        }
    }
}
}

您可以显示一些您使用的代码?嗨。。请检查代码..我遇到了类似的问题。每当我对本地SQLite数据库执行异步请求时,这种情况就会发生。不确定它是GC还是带有异步请求的东西。你找到解决方案了吗?你可以展示一些你使用的代码吗?嗨。。请检查代码..我遇到了类似的问题。每当我对本地SQLite数据库执行异步请求时,这种情况就会发生。不确定它是GC还是带有异步请求的东西。你找到解决办法了吗?