2013-07-21 35 views
1

我想使用一個定時器,它允許我以特定的時間間隔運行特定的代碼,但Winforms定時器非常不準確。我將它設置爲2秒,但是最多持續48秒。我所運行的代碼的種類很大程度上取決於儘快採取行動,因此48秒爲時已晚,無法做任何事情。.NET中最精確的計時器是什麼?

另外我不想讓計時器吃很多CPU週期,因爲我運行的代碼非常簡單。

+0

呃,如果它關閉* 46秒太晚*,有些東西是可疑的,比如不正確地阻塞UI線程。 WinForms計時器在其創建的適用UI線程上分派(通常每個「本機」窗口都有一個)。如果你想讓它圍繞一個阻塞線程開火,那麼你需要引入一個不同的線程或者使用一個使用不同線程(不被阻塞)的計時器。 – user2246674

+0

謝謝,我基本上使用調用Monitor方法的BackgroundWorker。計時器正在調用RunWorkerAsync。這不好嗎? –

+0

BGW.RunWorkerAsync *不應該*阻止。定時器回調中是否有阻止代碼,例如等待BGW完成? – user2246674

回答

2

檢查this以及MSDN比較是非常深入和完整的。

通過最精確的計時器Stopwatch這是用於計算Code Execution時間和其他類似的東西,它是使用Visual Studio的計算代碼的性能,所以很清楚應該如何準確的是方式。但在你的情況下,你不能使用它。我提到了StopWatch以瞭解您的信息,以及將來可能會看到此帖子的其他人。

+1

謝謝呀秒錶沒有滴答事件:( –

相關問題