c# (. net)中的图表控制使用了大量的CPU

本文关键字:CPU 控制 net | 更新日期: 2023-09-27 17:54:57

我正在使用c#中的FastLineChart来实时显示来自外部设备的信号。采样率约为700Hz。在我的程序中,我将采样降至100Hz左右,以尽量减少不必要的显示分辨率,但仍然使用太多的CPU。

我认为问题是我在图表上滚动数据(就像windows中的CPU图表一样),这正在消耗资源。我通过删除最老的元素,然后添加一个新元素到特定的序列(如下所示)来做到这一点。

timeGraph.Series[0].Points.RemoveAt(0);
timeGraph.Series[0].Points.AddY(average);

CPU负载大约是30%,我认为有点太高了。我没有最新的电脑,但它是一台带有GT9600显卡的Code 2 Duo。

有人有什么建议吗?有更好的方法吗?或者有什么方法能让它更快?

谢谢你的帮助!

c# (. net)中的图表控制使用了大量的CPU

好吧,这么老的问题要回答,但我被一个类似的问题困住了很长时间,所以对于任何发现这个的人:

停止大量的CPU占用:

声明一个整数

int graphUdate = 0;

2)在form_ load,添加

chart1.Series.SuspendUpdates();

3)在图形中添加点时,使用

graphUpdate++;

4)在同一空间中,每#个点更新一次图,并重置graphUpdate

if (graphUpdate == #)
            {
                chart1.Series.ResumeUpdates();
                chart1.Series.Invalidate();
                chart1.Series.SuspendUpdates();
                graphUpdate = 0;
            }

更新自上次图表以来收集的所有点。

删除点也将被暂停,这对CPU使用有很大的影响。

我认为问题可能是您使用的是Winforms。GDI+在处理动画图形时相当慢。如果可能的话,迁移到WPF肯定会有所帮助。但是,如果图表控件没有利用图形卡,则可能需要查看其他控件。