为什么运行图表越来越慢

时间:2014-09-29 08:44:37

标签: c# wpf xaml charts devexpress

我第一次向图表插入100点,并且需要大约25000毫秒来完成所有点的加载, 但是,下一次从101到200的点数需要71000毫升。我不知道为什么不同的时间在0到100和101到200之间。为了减缓下一个100点,请帮助我知道问题

我尝试了很多方法,但它们看起来都一样,这个问题对我来说太难了,这是我的项目。请帮忙 https://drive.google.com/#folders/0B8uAsRdEr19GUXA4OFhvN21WZDQ

var dt = new DispatcherTimer();
    dt.Interval = TimeSpan.FromMilliseconds(10);
    dt.Tick += dt_Tick;
    dt.Start();
    void dt_Tick(object sender, EventArgs e)
                    {
                          chart1.Series[0].Points.Add(new SeriesPoint(i, rd.Next(40, 50)));
                          chart2.Series[0].Points.Add(new SeriesPoint(i, rd.Next(40, 50)));
                          chart3.Series[0].Points.Add(new SeriesPoint(i, rd.Next(40, 50)));
                          chart1.Series[1].Points.Add(new SeriesPoint(i, rd.Next(60, 70)));
                          chart2.Series[1].Points.Add(new SeriesPoint(i, rd.Next(60, 70)));
                          chart3.Series[1].Points.Add(new SeriesPoint(i, rd.Next(60, 70)));
                          chart1.Series[2].Points.Add(new SeriesPoint(i, rd.Next(70, 80)));
                          chart2.Series[2].Points.Add(new SeriesPoint(i, rd.Next(70, 80)));
                          chart3.Series[2].Points.Add(new SeriesPoint(i, rd.Next(70, 80)));
                          i++;
                   }

1 个答案:

答案 0 :(得分:0)

如果您只想运行一次代码而不是每隔10 ms运行代码,因为上面的代码看起来为什么不是jsut使用Dispatcher.Invoke方法:

 Dispatcher.Invoke(() =>
                          {
                             chart1.Series[0].Points.Add(new SeriesPoint(i, rd.Next(40, 50)));
                             chart2.Series[0].Points.Add(new SeriesPoint(i, rd.Next(40, 50)));
                             chart3.Series[0].Points.Add(new SeriesPoint(i, rd.Next(40, 50)));
                             chart1.Series[1].Points.Add(new SeriesPoint(i, rd.Next(60, 70)));
                             chart2.Series[1].Points.Add(new SeriesPoint(i, rd.Next(60, 70)));
                             chart3.Series[1].Points.Add(new SeriesPoint(i, rd.Next(60, 70)));
                             chart1.Series[2].Points.Add(new SeriesPoint(i, rd.Next(70, 80)));
                             chart2.Series[2].Points.Add(new SeriesPoint(i, rd.Next(70, 80)));
                             chart3.Series[2].Points.Add(new SeriesPoint(i, rd.Next(70, 80)));
                             i++;
                          });

如果没有,那么你需要更好地解释这个问题......