MSDN上有寫啦
看一下應該很容易懂
Visual Studio 和 .NET Framework 中有三個計時器控制項,也就是可於 [工具箱] 的 [元件] 索引標籤上看到的伺服器端計時器、在 [工具箱] 的 [Windows Form] 索引標籤上看到的標準 Windows 架構計時器,以及只能以程式方式使用的執行緒計時器。Windows 架構計時器從 Visual Basic 版本 1.0 就有了,且一直維持著並無本質上的改變。這個計時器最適合在 Windows Form 應用程式中使用。伺服器端的計時器是傳統計時器的更新,它在伺服器的環境中最適合使用。執行緒計時器是簡單的輕量計時器,使用回呼方法而不使用事件,同時由執行緒集區執行緒提供服務。
在 Win32 的架構下有兩種執行緒:UI 執行緒,以及背景工作執行緒。UI 執行緒在大多數的時間裡都保持著閒置的狀態並且等待訊息到達它的訊息迴圈中。一旦收到訊息,它便處理這個訊息然後等待下一個訊息的到達。另外,背景工作執行緒則是用於執行背景處理而不使用訊息迴圈。Windows 計時器和伺服器端計時器兩者都使用 Interval 屬性執行。執行緒計時器的間隔是在 Timer 建構函式中設定。計時器是針對不同目的而設計的,依執行緒的處理方式做為辨識:
-
Windows 計時器是設計用在單一執行緒的環境之下,在此,利用 UI 執行緒來執行處理。Windows 計時器的正確率限制在 55 毫秒。這些傳統的計時器需要使用者的程式碼中有一個可以使用的 UI 訊息幫浦,並且一直從相同的執行緒作業,或是將呼叫整理到另外一個執行緒。對於一個 COM 元件,這可能對效能有不利的影響。
-
伺服器端計時器是為了在多執行緒環境下使用背景工作執行緒而設計的。因為它們使用不同的架構,伺服器端計時器可能要比 Windows 計時器更為精確。伺服器端計時器可以在執行緒間移動以處理被引發的事件。
-
執行緒計時器對於執行緒上不提取訊息的案例中相當有用。例如,Windows 架構計時器仰賴作業系統的計時器支援,而如果您沒有提取執行緒上的訊息,與計時器關聯的事件就不會發生。執行緒計時器在這種情況中更有用。
Windows 計時器位於 System.Windows.Forms 命名空間中、伺服器計時器位於 System.Timers 命名空間中,而執行緒計時器則位於 System.Threading 命名空間中。