-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
});
//...
コードを投稿してください。 –
はい。タイマー内のコードが長すぎると、タイマーは必要な間隔で実行できません。一度に1つしか実行できず、スキップします。 –
トリガされるメソッドでコードを実行するのにかかる時間は測定されましたが、決して100ミリ秒を超えません。 – Luigi04