关于timer和计数器的性能

peeperp 2014-07-16 10:09:50
我在一个winform里面加了一个timer控件
在将控件的Interval时间设置为1秒,
然后在 Tick 事件里每一隔一秒将秒钟变更一次.
但是我还有一个方法也放在这个事件中.
现在问题是我的那个方法比较耗资源所以我定为每3分钟运行一次
现在有两种方法来实现,
1.再加一个timer控件将控件的Interval时间设置为3分钟, 将这个方法放在新的timer里调用
2.直接在之前的那个timer中的 Tick 事件里加个全局的计数器(每次tick事件加1),判断计数器到了180时再调用那个复杂的方法并将计数器清0


想问一下从运行性能上来讲哪种方法更好点~!
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
srdh_2662347726 2014-07-17
  • 打赏
  • 举报
回复
向指定日期添加时间间隔 private DateTime G_datetime;//定义时间字段 private void Frm_Main_Load(object sender, EventArgs e) { G_datetime=DateTime.Now;//得到系统当前时间 lab_time.Text = G_datetime.ToString(//显示时间信息 "时间: yyyy年M月d日 H时m分s秒"); } private void btn_AddM_Click(object sender, EventArgs e) { G_datetime = DateAndTime.DateAdd(//向时间字段中添加一分钟 DateInterval.Minute, 1, G_datetime); lab_time.Text = G_datetime.ToString(//显示时间信息 "时间: yyyy年M月d日 H时m分s秒"); } private void btn_AddH_Click(object sender, EventArgs e) { G_datetime = DateAndTime.DateAdd(//向时间字段中添加一小时 DateInterval.Hour, 1, G_datetime); lab_time.Text = G_datetime.ToString(//显示时间信息 "时间: yyyy年M月d日 H时m分s秒"); } private void btn_addD_Click(object sender, EventArgs e) { G_datetime = DateAndTime.DateAdd(//向时间字段中添加一天 DateInterval.Day, 1, G_datetime); lab_time.Text = G_datetime.ToString(//显示时间信息 "时间: yyyy年M月d日 H时m分s秒"); }
peeperp 2014-07-16
  • 打赏
  • 举报
回复
不知道该如何实验哦,计数器的可以做,那个timer控件的不知道如何去评估
於黾 2014-07-16
  • 打赏
  • 举报
回复
一样的,所有timer都在主线程中,只不过相当于定义了2个函数,分别挂在2个事件下 一个执行,会影响另一个的执行 所以想不干扰,还是要放到线程中去
xian_wwq 2014-07-16
  • 打赏
  • 举报
回复
第2种方法好些,但是凡使用Timer要要考虑重入问题, 如果循环间隔时间到了,但是内部还没有执行完,则Timer会再次触发处理逻辑, 这样会导致其他异常发生。 建议将耗时的处理放在线程中去,这样比timer稳妥
bdmh 2014-07-16
  • 打赏
  • 举报
回复
首先你先搞清楚form的timer不是异步的,会阻塞线程,它执行时,你干不了别的事,界面也会卡,所以你可以考虑 用线程去做
lulu23260 2014-07-16
  • 打赏
  • 举报
回复
这个是不是要靠实验?

111,125

社区成员

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

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

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