我读了这篇优秀的文章比较.NET Framework类库中的Timer类,得出的结论是,我可以做的任何事情都Windows.Forms.Timer可以做得更好Timers.Timer- 然后是一些.
因此,我想到的一个显而易见的问题是:为什么Windows.FormsTimer会提供?
传统(向后兼容)支持?
其他?
主要的便利Windows.Forms.Timer是它的事件是在UI(Winforms)线程上触发的.如果您的计时器事件执行UI操作,它可能是最简单的替代方案(而不是调用Control.Invoke/BeginInvoke或SynchronizationContext.Post/Send在您的所有事件中).
Windows.Forms.Timer具有设计器支持。因此,它的行为类似于任何其他Winforms组件(即,您可以将其拖动到窗体上,它是Controls集合的一部分,等等)。
由System.Windows.Forms.Timer类引发的计时器事件与Windows Forms应用程序中的其余代码是同步的。这意味着正在执行的应用程序代码将永远不会被此计时器类的实例抢占(假设您不调用Application.DoEvents)。Windows.Forms.Timer类触发的事件与Winform控件兼容;您可以安全地与他们互动,而不必致电Invoke()。
该System.Timers.Timer班是一种基于服务器的计时器,其设计和在多线程环境进行了优化。可以从多个线程安全地访问此计时器类的实例。尽管Invoke()与Winforms进行交互在技术上是必需的,但Timer类确实提供了一个SynchronizingObject属性,您可以在该属性上附加要与之安全交互的Windows窗体。
此处更多信息:http : //msdn.microsoft.com/zh-cn/magazine/cc164015.aspx
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |