Dot-Net

DispatcherTimer 與 WPF 應用程序中用於任務調度程序的正常 Timer

  • February 13, 2010

請解釋 @Kent Boogaart 用於在多執行緒 WPF 應用程序中用作本主題中的任務調度程序的“DispatcherTimer”和“正常計時器”之間的區別:

WPF 應用程序的多執行緒策略所需的建議

在對其中一篇文章的評論中(引用):

- 如果 DispatcherTimer 所做的只是啟動另一個執行緒,那麼使用 DispatcherTimer 的意義何在?….那些執行緒不需要在 UI 執行緒上啟動。您可以只使用正常 Timer 並避免完全中斷 UI

什麼是“正常計時器”?它們(“DispatcherTimer”和“正常定時器”)對 UI 的影響有何不同?

(在閱讀這篇文章之前,我認為 DispatcherTimer 是在 WPF 中使用計時器的一種自然方式。如果這不是真的,會發生什麼情況?)

DispatcherTimer 是正常定時器。它在 UI 執行緒上觸發它的 Tick 事件,你可以對 UI 做任何你想做的事情。System.Timers.Timer 是一個非同步定時器,它的 Elapsed 事件線上程池執行緒上執行。您在事件處理程序中必須非常小心,您不得觸摸任何 UI 組件或數據綁定變數。並且您需要在訪問也用於 UI 執行緒的類成員時使用 lock 語句。

在連結的答案中, Timer 類更合適,因為 OP 試圖故意非同步執行程式碼。

引用自:https://stackoverflow.com/questions/2258830