求高手 c# timer中 为什么要先把timer停下再启用?

mindcastle 2016-10-28 08:33:28
本人小白 ,在编写一个用modbus与单片机通信的程序中,看到别人的程序有这么一个步骤。


在timer_tick中 先把timer.enabled 设置为false 然后在这个方法的结尾又把它设置为这是为什么呢?
...全文
747 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
有时想起 2016-10-31
  • 打赏
  • 举报
回复
为了更安全 避免timer中还未执行完全部内容而下一个timer已经到来
xuzuning 2016-10-31
  • 打赏
  • 举报
回复
这只是业务上的要求,你应与业务人员沟通
白衣如花 2016-10-31
  • 打赏
  • 举报
回复
看到这种C风格的C#代码,头好大。。 变量在函数开头声明,声明变量使用“,”运算符,不严格遵守小驼峰 还好这个没下划线。。。
飞天凤凰601 2016-10-31
  • 打赏
  • 举报
回复
这是为了防止timer在执行内部时,因为时间到了,被再次执行,程序会乱, 等timer里的内容执行完后,再次启动用timer,
drifter2002 2016-10-31
  • 打赏
  • 举报
回复
这样可以保证两次执行之间间隔N秒。
Panda_Ling 2016-10-31
  • 打赏
  • 举报
回复
楼上都是正解
正怒月神 2016-10-31
  • 打赏
  • 举报
回复
假设 timer每1秒执行1次 tick事件。 假设执行的事件需要10秒。 那么在这一秒执行时,你的10秒还没结束,结果下一秒又要触发tick事件来处理事情了。 如果你的事情是对数据库进行修改,那可能就乱套了。
飞天凤凰601 2016-10-31
  • 打赏
  • 举报
回复
这不是C#风格,大部分软件都这风格,我原来做Delphi一样这样用
大然然 2016-10-30
  • 打赏
  • 举报
回复
假设你的timer每10秒运行一个方法 ,而那个方法执行了20秒,那么在第10秒也就是那个方法还在进行的时候,又会被执行一次。
Justin-Liu 2016-10-29
  • 打赏
  • 举报
回复
类似于保证共享资源的独占
john_QQ:2335298917 2016-10-28
  • 打赏
  • 举报
回复
引用 1 楼 daixf_csdn 的回复:
timer触发后并不自动等待,也就是下一个n秒又会执行。 如果不停止timer,而中间部分的代码执行时间超出n秒,那么前后的执行会叠加造成不可预测的问题。
赞成这个观点,防止Timer_tick未执行完又触发一个Timer_tick
圣殿骑士18 2016-10-28
  • 打赏
  • 举报
回复
timer触发后并不自动等待,也就是下一个n秒又会执行。 如果不停止timer,而中间部分的代码执行时间超出n秒,那么前后的执行会叠加造成不可预测的问题。

111,098

社区成员

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

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

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