Threading.Timer与Forms.Timer

时间:2009-01-06 22:21:16

标签: .net winforms multithreading .net-2.0

这个问题的简短形式:在多线程WinForms应用程序中使用Forms.Timer是否恰当?

更具体地说,我正在构建一个应用程序,该应用程序使用多个System.Threading.Timers异步启动进程,检查包含这些异步进程结果的队列,并更新应用程序主表单显示的统计信息。

在这样的应用程序中,使用Forms.Timer来实际检查应用程序统计信息并将它们绘制到主窗体是否合适,或者只是让应用程序顺利运行?

3 个答案:

答案 0 :(得分:24)

Forms.Timer注册定时器,以便在定时器关闭时发送消息。引发的事件被视为GUI事件。 System.Threading.Timer使用线程阻塞方法。基本上,您应该将Forms.Timer用于面向GUI的计时器(向用户界面添加一些效果)和Threading.Timer用于计划任务和其他事项。

答案 1 :(得分:14)

MSDN有一个comparison article来完成主题。

答案 2 :(得分:2)

我同意Mehrdad和David的说法,但你应该知道,计时器并不能保证及时性或命令或执行。太多的计时器和应用程序将挂起; - )