winfrom之chart控件实时绘制折线图出现红叉问题

weixin_44446439 2023-06-26 16:47:27

图1

 

图2

图3

图4

 

图1 为正常情况  图2为出现红叉 图3图4为全局异常捕获到的异常

1.数据由定时器读取采集卡的通道进行获取,没秒读取十次,绘制方法seriesleft2.Points.AddXY(TimeX, leftP);TimeX为时间,leftP为读取的气压值。

2.图表偶尔会变成如图2的红叉,程序会抛异常(图3),出现红叉后鼠标移动到出现红叉的chart控件内会出现图4的异常。
3.try catch也捕捉不到异常。

4.出现红叉后会一直显示红叉状态,程序能正常继续运行(不重新启动)。

想请问下各位大牛什么原因,因为触发概率实在是太低了,又不抛异常
曲线出现红叉的原因可能是什么?或者说出现红叉后有什么办法继续正常显示数据。

...全文
1284 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
moliiiiiiiiii 2023-11-30
  • 打赏
  • 举报
回复

您好 ,请问您最后怎么解决的,我现在也出现了类似的情况;

dd_zhouqian 2023-07-03
  • 打赏
  • 举报
回复

_mTimer_leftAi.Stop();
//do somethiing code.
//....
//....
//....
_mTimer_leftAi.Start();

赵4老师 2023-06-27
  • 打赏
  • 举报
回复

1.缺必要的obj.Dispose()和GC.Collect()调用
2.跨线程操作GUI对象
3.多线程漏加锁

weixin_44446439 2023-06-27
  • 举报
回复
@赵4老师 chart控件的绘制在测试完成后会把存在的点位都清空,我刚刚也进行了内存泄漏测试,内存不存在问题,也不是跨线程操作的问题,lock锁确实没加
SoftwareTeacher 2023-06-26
  • 打赏
  • 举报
回复

@CSDN-Ada助手 请你解答一下

CSDN-Ada助手 2023-06-26
  • 举报
回复
@SoftwareTeacher 根据您提供的信息,我认为出现红叉的原因可能是数据异常导致的。您可以在捕获异常的地方打印出异常信息,以便更好地了解异常的原因。同时,您可以在出现异常时尝试重新采集数据并绘制曲线,以保证数据的连续性和准确性。另外,您可以考虑对数据进行过滤或者校验,以避免出现异常数据。希望能对您有所帮助。
weixin_44446439 2023-06-27
  • 举报
回复
@CSDN-Ada助手 数据源没有问题,数据源位置我进行异常捕获,并断点,程序没有一次运行到断点处
CSDN-Ada助手 2023-06-27
  • 举报
回复
@weixin_44446439 根据你提供的信息,可能出现红叉的原因有很多种。以下是我能想到的一些可能原因以及相应的解决方法: 1. 数据采集和绘制的过程中发生了线程安全问题。如果在多个线程中访问同一个资源,会导致数据不一致、异常和崩溃等问题。你可以尝试使用线程同步技术来解决此类问题,例如使用锁或者线程安全的集合类。 2. 图表控件的数据源发生了变化,导致绘制异常。你可以检查一下图表控件的数据源是否正确,并且在发生异常时及时更新数据源。 3. 图表控件的绘制过程中发生了内存泄漏,导致程序崩溃或者异常。你可以使用内存分析工具来检查程序是否存在内存泄漏问题,并及时释放资源。 4. 图表控件的绘制过程中发生了异常,但是由于异常被捕获了,所以无法得知具体的异常信息。你可以在捕获异常的代码块中输出异常信息,或者使用调试工具来获取异常信息。 5. 图表控件的绘制过程中发生了其他未知的问题。你可以使用调试工具来定位问题并解决。 在出现红叉后,你可以尝试重新绘制图表控件,或者重新加载数据源,以恢复正常显示数据。
10条回复

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧