2017-08-27 3 views
-1

私のアプリケーションでは、4つのLiveChartに新しいデータを追加するメソッドを起動するSystem.Windows.Forms.Timerを使用しています。間隔は1000ミリ秒に設定されます。最初の1〜2分のようにうまく動作しますが、間隔が大きくなり、10分後には15秒ごとにトリガされます。 私は運が無ければ別のタイマーを使用しようとしました。アプリケーション/ LiveChartsのパフォーマンスがあまりにも悪く、タイマーがUIスレッド上で実行されるため、アプリケーションが「準備完了」状態になるのを待たなければならないのでしょうか?Windowsフォームのタイマーが実行されません

ありがとうございます!問題を解決するには、LiveChartsを使用していた

タイマー設定

graphRefreshTimer = new System.Windows.Forms.Timer(); 
graphRefreshTimer.Interval = 1000; 
graphRefreshTimer.Tick += new EventHandler(refreshUI); 
graphRefreshTimer.Start(); 

refreshUI(基本的にはちょうどLiveChartsに新しいChartValuesを追加する。実行するために、100ミリ秒の最大かかります)

//... 
B1VoltageValues.Add(new MeasureModel 
       { 
        DateTime = now, 
        Value = Convert.ToDouble(B1.Voltage)/1000 
       }); 

B1CurrentValues.Add(new MeasureModel 
       { 
        DateTime = now, 
        Value = Convert.ToDouble(B1.Current)/1000 
       }); 

B1ChargingCapacityValues.Add(new MeasureModel 
       { 
        DateTime = now, 
        Value = Convert.ToDouble(B1.getChargeCapIfTrue())/1000 
       }); 

B1DischargingCapacityValues.Add(new MeasureModel 
       { 
        DateTime = now, 
        Value = Convert.ToDouble(B1.getDischargeCapIfTrue())/1000 
       }); 

B1EnergyValues.Add(new MeasureModel 
       { 
        DateTime = now, 
        Value = Convert.ToDouble(B1.Energy)/1000 
       }); 
//... 
+0

コードを投稿してください。 –

+0

はい。タイマー内のコードが長すぎると、タイマーは必要な間隔で実行できません。一度に1つしか実行できず、スキップします。 –

+0

トリガされるメソッドでコードを実行するのにかかる時間は測定されましたが、決して100ミリ秒を超えません。 – Luigi04

答えて

0

標準的なものより多くのデータを扱うことができる。このパッケージを使用した後、UIのフリーズは発生しません。

関連する問題