調度計時器,在UI線程上的更新很方便 - 有一個問題......這會導致用戶界面凍結時間!WPF窗口實現ISynchronizeInvoke與System.Timers.Timer一起使用
因此,我想在System.Timers命名空間中使用Timer,它將實現相同的功能,除非UI將更加靈敏,因爲它會從不同的線程更新。
System.Timers.Timer需要一個SynchronisationObject,因此我想在我的WPF窗口上實現ISynchronizeInvoke。
有人可以幫助我理解如何去實現這一點,並驗證我的想法是否正確。
任何幫助,將不勝感激。
嗨喬恩 感謝您的答覆。我目前沒有在定時器事件中運行任何UI代碼,但應用程序正在增長,我懷疑UI交互很快就會出現。發生這種情況時,我希望代碼繼續按原樣運行。 通過實現ISynchroniseInvoke,這是否意味着我不必調用我想操作的UI元素上的Dispatcher.Invoke和Dispatcher.BeginInvoke?如果是這樣,這是非常可取的 - 所以我真的很想實施ISynchronizeInvoke,但我不知道如何。 – c0D3l0g1c 2010-09-07 06:26:31
@ c0D310g1:你錯過了我的觀點。如果你實現了'ISynchronizeInvoke',你就會有效地回到DispatcherTimer'解決方案中......你的所有代碼都將在UI線程上運行,所以它會再次凍結UI。如果你想在UI線程上運行定時任務,那就是'DispatcherTimer'的用處。但是你*不想爲長時間運行的任務做這件事,正因爲它鎖定了用戶界面。 – 2010-09-07 06:38:25
這很有道理,謝謝! – c0D3l0g1c 2010-09-07 10:00:02