2009-01-06 45 views
19

這個問題的簡短形式:何時,是否適合在多線程WinForms應用程序中使用Forms.Timer?Threading.Timer vs. Forms.Timer

更具體地說,我構建了一個應用程序,它使用多個System.Threading.Timers異步啓動進程,檢查包含這些異步進程結果的隊列,並更新應用程序主窗體顯示的統計信息。

在這樣的應用程序中,是否適合使用Forms.Timer來實際檢查應用程序的統計信息並將其繪製到主窗體中,還是僅僅在應用程序的平滑運行中引發一些問題?

回答

23

​​註冊計時器以在計時器關閉時發送消息。提出的事件被視爲GUI事件。 System.Threading.Timer使用線程阻塞方法。基本上,您應該使用​​來爲您的面向GUI的定時器(向用戶界面添加一些效果)和Threading.Timer來調度任務和其他事情。

13

MSDN有comparison article這個主題正義。

+2

體面的文章。爲了討論的目的,如果總結兩者之間的差異(Threading.Timer需要同步但提供更多控制,Forms.Timer不一定會爲每個tick生成一個事件等),那將會很好。 ) – Shog9 2009-01-06 22:40:17

+1

優秀。在我的「閱讀」一堆。 – 2009-01-06 22:41:55

+0

@ t3rse:鏈接已經死了:( – 2017-12-22 18:39:31

2

我同意Mehrdad和David的說法,但你應該知道定時器不保證及時性,定單或執行。太多的計時器和應用程序將只是掛起;-)