chart显示串口接收下位机发过来的温度数据,发送周期为10ms。现在若是发过来的数据不变,chart显示没有错误。若是模拟温度数据正弦变化,chart显示几十个周期后界面就变成一个❌,但实际串口还在正常发送数据,说明接受数据不为Null。请教各位,这是什么原因导致的?有什么解决办法吗?
chart本质是个图片,用picture显示(或者自定义control实现),当界面显示出叉
通常是因为那个picturebox异常挂了,没法进行重绘了。大部分情况就是那个很烦,很烦的“GDI+一般性错误”。
解决办法:如果是Chart控件那么请注意别疯狂加数据描点,同时请删除前面已经过期的数据,正常处理是1秒种批量加一批,同时批量删一批。你要保证那个玩意能够处理,并不会崩溃
应该是高频重绘时OnPaint事件内部引起的。
解决办法:可以重写父类事件,try catch捕获异常,看是否可以屏蔽掉。
百度搜“GDI泄露监测”
多线程访问同一个Image需要加锁
线程中改变控件需要使用委托
发送周期太快。你使用委托还是定时器读取信号,主线程调用如果你释放的不及时会有丢失情况,如果用的是线程就得看线程池调用是不是出现问题,如果线程池都繁忙也会出现这种情况。不贴图不上程序这个不好整。