怎样才能优化timer中执行任务的效率啊?

xiaofeng54 2010-01-16 04:13:30
我现在的程序如下:


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条曲线,横轴是时间,纵轴是数值)。请问这是因为执行任务量大的原因么?有没有好的解决方案呢?
...全文
2340 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofeng54 2010-01-17
  • 打赏
  • 举报
回复
还有其他方法么?
例如我在程序里添加多个timer,每个timer对应一个或多个控件可以么?
xiaofeng54 2010-01-17
  • 打赏
  • 举报
回复
有更多的办法么?
SQL77 2010-01-16
  • 打赏
  • 举报
回复
用FOREACH遍历list看能不能好点

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧