我使用visual c#wpf應用程序,並想擠出我的計時器。VS-C#計時器的準確性
我目前使用System.Timers.Timer
,調用它間隔1ms(是的,我知道我不能得到1ms定時器使用VS-wpf)。
我也使用Stopwatch
來測量定時器性能,並且看到大約13ms。
兩個問題:
- 如果從86的應用程序更改爲64,應我的定時器性能提升?
- 有下降計時器間隔的快速方法(假設我不想切換到實時OS)
謝謝!
我使用visual c#wpf應用程序,並想擠出我的計時器。VS-C#計時器的準確性
我目前使用System.Timers.Timer
,調用它間隔1ms(是的,我知道我不能得到1ms定時器使用VS-wpf)。
我也使用Stopwatch
來測量定時器性能,並且看到大約13ms。
兩個問題:
謝謝!
答到的第一個問題:沒有
答案(二兩題):
的System.Timers.Timer的分辨率是一樣的系統時鐘(見Accurate Windows timer? System.Timers.Timer() is limited to 15 msec),所以用它創建值爲1毫秒是毫無用處的。除此之外,當System.Timers.Timer
觸發事件時,事件處理程序通常在線程ThreadPool
上的定時。當事件處理程序實際上是執行取決於調度程序和情況。所以你不知道你的事件處理程序將會滯後於事件的實際觸發多久。
在Windows中,可以使用高分辨率測量時間(請參閱其他備註)。精確地以毫秒分辨率和確定性響應時間執行一段代碼是不可能的。在我看來,你真的需要一個實時操作系統。
就像我說的,我知道我不會達到1ms的準確性。但我試圖從視覺工作室計時器獲得最佳性能。 –
「最佳表現」是什麼意思?如果你的意思是'更短的間隔比13毫秒'你已經得到,答案是'不'。即使你要編寫你自己的Timer類,你仍然會受到Timer事件調度的限制。 –
在最小定時器時間間隔內意味着im,並且任何縮短它的嘗試都是徒勞的? –
減少** 1ms間隔下面的定時器間隔**? –
這裏的任何答案都適用於你? https://stackoverflow.com/questions/9228313/most-accurate-timer-in-net –
也許你應該告訴我們你想做什麼_首先需要一個精確的計時器?如果意圖是_smooth動畫_那麼你應該真的使用WPF內置'Storyboard's比使用WinForms方法 – MickyD