System.Timers.Timer事件处理程序线程模式

时间:2010-04-13 12:28:41

标签: .net-3.5 timer

在MSND中找不到我的问题的答案:  Timer类是否保证订阅Elapsed事件的所有处理程序都将在同一个线程池线程上执行?如果是的话,它们是否会按照顺序被执行,因为它们被添加到Elapsed事件中? 感谢

1 个答案:

答案 0 :(得分:1)

据我所知,确保Elapsed事件处理程序都在同一个线程上的唯一方法是设置Timer的SynchronizingObject属性(通常是控件或某个控件上的属性)表单,以便在UI线程上处理Elapsed事件。否则事件是在线程池线程上处理的,这意味着它每次都可能是同一个线程,但几乎肯定不是。

请参阅:http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx

事件处理程序触发的顺序可能将按照您添加它们的顺序排列,但这不保证,将来可能会更改。如果您的设计依赖于按特定顺序触发的事件,则应更改您的设计。