0

我在我的应用程序中使用了 System.Windows.Forms.Timer,它触发了一种将新数据添加到四个 LiveCharts 的方法。间隔设置为 1000 毫秒。它在前一两分钟内运行良好,但随后间隔变得越来越大,10 分钟后它仅每 15 秒左右触发一次。我尝试过使用不同的计时器,但没有任何运气。可能是应用程序/LiveCharts 的性能太差了,因为计时器在 UI 线程上运行,它必须等待应用程序“准备好”?

谢谢!

定时器设置

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

refreshUI(基本上只是将新的 ChartValues 添加到 LiveCharts。运行最多需要 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
                });
//...
4

1 回答 1

0

该问题的解决方案是使用 LiveCharts.Geared 包,它可以处理比标准包更多的数据。使用此包后,UI 没有进一步冻结。

于 2017-09-09T15:42:26.310 回答