报错信息:托管调试助手 "CallbackOnCollectedDelegate":“对“BLETestForWCHBLEDLL!BLETestForWCHBLEDLL.BLE+pFunDevConnChangeCallBack::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。”
解决方式:
创建委托实力,保证委托生命周期与程序相同,不会被回收;
BLE.pFunDevConnChangeCallBack pFunDevConnChangeCallBack;
pFunDevConnChangeCallBack = new BLE.pFunDevConnChangeCallBack(BLEConnect);
DeviceConnectHandle = BLE.WCHBLEOpenDevice(devInfo, pFunDevConnChangeCallBack);
之前写法
DeviceConnectHandle = BLE.WCHBLEOpenDevice(devInfo, BLEConnect);
文章讨论了在使用托管调试助手时遇到的错误,关于已垃圾回收的委托可能导致应用程序问题。解决方法是确保委托的生命周期与程序一致,如通过创建新的`BLE.pFunDevConnChangeCallBack`实例并保持其活动。

1886

被折叠的 条评论
为什么被折叠?



