标签:
1.System.Timers.Timer
(1)在应用程序中生成定期事件。
(2)如果 SynchronizingObject 属性为 null,则在 ThreadPool 线程上引发 Elapsed 事件。 如果 Elapsed 事件的处理时间比 Interval 长,在另一个 ThreadPool 线程上将会再次引发此事件。在这种情况下,事件处理程序应当是可重入的。
(3)即使 SynchronizingObject 不是 null,Elapsed 在 Dispose 或 Stop 方法调用后或 Enabled 属性设置为 false 后,事件可以发生,这是因为引出 Elapsed 事件的信号总是排队等待执行线程池线程。 解决此争用条件的一种方法是:设置一个标志,通知 Elapsed 事件的事件处理程序忽略随后的事件。
(4)当 Elapsed 事件由可视化 Windows 窗体组件(如按钮)处理时,通过系统线程池访问组件可能导致异常,或者可能不管用。 为避免这种情况,可将 SynchronizingObject 设置为 Windows 窗体组件,该组件将导致在创建它的同一线程上调用处理 Elapsed 事件的方法。
2.System. Thread.Timer
(1)由计时器执行的回调方法应该是可重入的,因为它是在 ThreadPool 线程上调用的。
(2)创建计时器时,可以指定在第一次执行方法之前等待的时间量(截止时间)以及此后的执行期间等待的时间量(时间周期)。
(3)不支持SynchronizingObject。
3.System.Windows.Form.Timer
(1)实现按用户定义的时间间隔引发事件的计时器。 此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。
标签:
原文地址:http://www.cnblogs.com/JustYong/p/4619174.html