C#:蓝牙GATT通信。GattCharacteristic.ValueChanged在一段时间后不会被命中
我正在开发wpf应用程序,它使用GATT进行蓝牙通信。我正在使用GattCharacteristic.ValueChanged来处理来自设备的任何值。它会工作一段时间,事件处理程序在1分钟后不会被调用。此问题在windows 8.1中观察到,但在windows 10中工作 我是GattCharacteristic成员变量,因此GC不收集该变量。问题仍然存在 有人能告诉我这里可能存在什么问题吗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
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还是带有异步请求的东西。你找到解决办法了吗?