第1个B类问题-灌写程序后不出现信息

第1个B类问题-灌写程序后不出现信息

问题出现的现象

​ 1.使用串口更新更新User程序后,芯片程序继续运行,但没有信息打印出来,关闭串口更新窗口,使用其他串口工具,可以看到调试信息打印出来。并未有规律的复现

​ 2.经王老师使用发现,第一次打开串口更新更新User程序,有信息打印出来,关闭串口更新窗口,重新导入工程,再打开串口更新程序使用出现异常。

​ 3.根据王老师的提示信息,复现串口更新问题现象,第一次使用串口更新可以正常使用,关闭再打开就会出现调试信息不显示的问题。

问题出现的原因

​ 1.由于C#委托函数的特性,两次解除事件绑定会使得委托失效,即使重新绑定事件委托函数依旧不能运行。

问题解决的过程

​ 1.根据王老师提供的思路,既然使用其他串口工具可以打印信息,而串口更新不能,说明绑定的串口被释放,可关闭串口并重新打开,但经实验证明,此方法未能解决该问题,并且会使得绑定速度变慢。后面取消了该方法。(该问题出现2月未解决)

​ 2.2020年11月29号晚,王老师复现了关闭串口更新窗口,重新导入工程,再打开串口更新程序使用出现异常的现象,根据王老师提供的现象,在本机复现现象,经测试,第一遍打开串口更新程序时,程序灌写多少次没有问题,而关闭后再打开,程序即出现现象,关闭主窗体重新打开IDE,程序又可正常运行,定位至串口更新程序关闭事件导致的打印信息不出现问题,排查关闭事件后发现窗体关闭时,委托事件被多次解除绑定导致失效。

问题解决的办法

​ 1.在关闭事件中将多次解绑函数取消并删除其他冗余代码后,程序可正常运行。