2014-09-29 97 views
0

我第一次插入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

回答

0

如果你只是想一次,不是每個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