为什么运行图越来越慢

问题描述:

我第一次插入100点图,并把它约25000毫秒,以实现负载的所有点, 但是,接下来的时间,从101到200点取71000个milisecons。我不知道为什么时间在0到100和101到200之间。为了减慢下一个100点,请帮助我知道问题为什么运行图越来越慢

我尝试了很多方法,但它们看起来都一样,这个问题对我来说太难了,这里是我的project.please帮助 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

以防万一:如何往往是代码行'dt.Tick + = dt_Tick;'执行? – 2014-09-29 09:03:13

+0

这行代码将运行300次。如果问题在这里,请帮我知道为什么?谢谢你 – hoainam1902 2014-09-29 09:49:10

+2

每次运行时,它都会向'.Tick'事件添加一个NEW处理程序。这意味着它运行了300次之后,当'.Tick'事件发生时,'dt_Tick()'方法将被调用300次。您应该只在整个运行过程中运行一行代码。 – 2014-09-29 10:23:51

如果你只是想一次,不是每个10毫秒运行代码上面的代码看起来像为什么不是仅仅指刚使用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++; 
          }); 

如果没有,那么你需要解释的问题比较好...

+0

我已经上传了我的项目,我会很感激帮助 – hoainam1902 2014-09-29 15:01:16