-1
我在我的应用程序中使用了一个System.Windows.Forms.Timer,它触发了向四个LiveCharts添加新数据的方法。间隔设置为1000 ms。它可以像第一个或两个分钟一样正常工作,但间隔变得越来越大,在10分钟后它只会每隔15秒触发一次。 我尝试过使用不同的定时器,没有任何运气。可能是因为应用程序/ LiveCharts的性能太糟糕了,并且由于定时器在UI线程上运行,它必须等待应用程序“准备就绪”?Windows窗体计时器没有按时执行
谢谢!
定时器设置
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
});
//...
请发布代码。 –
是的。如果定时器中的代码花费太长时间,则定时器无法按所需间隔运行。它一次只能运行一个并跳过。 –
我测量了在被触发的方法中执行代码需要多长时间,但从未超过100 ms。 – Luigi04