日期:2014-05-18  浏览次数:20859 次

怎么每次只准一个timer进程运行?
我在我的项目里面用了一个timer控件,设定一秒钟运行一次。但是我从日志记录里面发现有时候有两个timer进程同时在运行,而且我那个项目又老是出错,所以我想问下有什么让timer每次只运行一个的方法没有?

------解决方案--------------------
做一个标识,如果有运行timer了,就改变标识,运行完在换回来,下一个timer运行的时候查看标识,如果有运行的timer就跳出!
------解决方案--------------------
探讨

很简单,上一个一秒钟内没运行完就行

------解决方案--------------------
可能我的表述上有些问题,System.Windows.Forms.Timer类触发时,会将定时器消息插入线程的消息队列中,调用线程从消息队列里提取消息,那么意味着定时器方法不能被多个线程调用。----我是这理解的这个定时器是单线程的,当然相对于调用线程,他肯定是另外的一个线程,从这个意义上讲,他是多线程的
而System.Threading.Timer和System.Timers.Timer,只要定时器时间到,不管上一次定时器方法是否完成,他不会等待,而会再次开启新的线程来执行定时器方法。----这是我理解的相对于System.Windows.Forms.Timer类来说,这两个定时器是多线程的
------解决方案--------------------
探讨

所有的Timer都是多线程的,没有单线程的概念,请不要偷换概念。