Windows.Forms.Timer 或 System.Threading.Timer

50

我有一个应用程序,运行许多线程。每个线程都应该有一个定时器来检查该线程范围内的某些内容。我的问题是:我应该使用哪个定时器?它们之间有什么区别?


1
我相信Windows.Forms.Timer只能在UI线程上运行。我知道它不准确并且会漂移。根据你的问题,我会研究TPL(任务并行库)。 - Brettski
1个回答

83

本文提供了一份优秀的比较,并且应该包含您需要的信息:在.NET Framework类库中比较Timer类

                                     Windows.Forms        System.Timers            System.Threading 
计时器事件运行在哪个线程上?           UI线程               UI或工作线程              工作线程 
实例是否线程安全?                     否                    是                        否 
对象模型是否熟悉/直观?                是                    是                        否 
是否需要Windows Forms?                是                    否                        否 
节拍的品质是否达到节拍器水平?         否                    取决于系统资源可用性*        取决于系统资源可用性* 
计时器事件是否支持状态对象?          否                    否                        是 
初始计时器事件是否可调度?             否                    否                        是 
类是否支持继承?                      是                    是                        否 

* 根据系统资源(例如,工作线程)的可用性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接