怎样才能优化timer中执行任务的效率啊?
我现在的程序如下:
public void AfterCreatCurve(ZedGraphControl zg)
{
zg.GraphPane.XAxis.Scale.MaxAuto = true;
double x = (double)new XDate(DateTime.Now);
double y = GlobalUser.ran.NextDouble();
double y1 = GlobalUser.ran.NextDouble();
double y2 = GlobalUser.ran.NextDouble();
GlobalUser.list1.Add(x, y);
GlobalUser.list2.Add(x, y1);
GlobalUser.list3.Add(x, y2);
if (GlobalUser.list1.Count >= 150)
{
GlobalUser.list1.RemoveAt(0);
}
if (GlobalUser.list2.Count >= 150)
{
GlobalUser.list2.RemoveAt(0);
}
if (GlobalUser.list3.Count >= 150)
{
GlobalUser.list3.RemoveAt(0);
}
zg.AxisChange();
zg.Refresh();
}
private void timer1_Tick(object sender, EventArgs e)
{
for (int i=0; i < 35; i++)
{
AfterCreatCurve(GlobalUser.myZed[i ]);
}
}
其中timer的执行周期设置的是1000ms,即1秒执行一次,程序很简单,但是任务量比较大,在一个周期内我只对1个控件执行该程序时一切正常,可是一旦对36个控件(GlobalUser.myZed[i],i=0...35)执行,运行后程序显示上就会出现问题,横轴(X轴)显示的时间出现偏差,乱跳(我做的是一个实时曲线程序,屏幕上要同时监视30个坐标系,每个坐标系里有3条曲线,横轴是时间,纵轴是数值)。请问这是因为执行任务量大的原因么?有没有好的解决方案呢?