2010-03-16 134 views
1

什麼是使用定時器的最佳方法。使用System.Timer.Timer類或使用Thread.Sleep語句在非終止循環中使用單個線程?實現線程定時器的最佳方法是什麼

在此先感謝

+0

取決於你想達到的目標...如果你想要的東西有時間目的比你應該使用......等待它......定時器:D – RvdK 2010-03-16 13:15:02

回答

0

用一個定時器。它就在那裏,專門爲此目的,那麼爲什麼你不使用它?

3

通常,如果他們滿足您的需求,請使用已經存在的組件。然而,System.Threading.Timer使用.NET線程池,所以任何下列條件將使其成爲一個可憐的候選人:

  • 你需要一個STA線程(所有ThreadPool線程都是MTA)
  • 你需要的所有出現在同一個線程
  • 你要分配一個特定的優先級上的重複任務運行(更低或更高),以您的任務
  • 你的任務是特別長時間運行或使用非平凡塊
0

您引用的兩種方法用於不同的結果。

定時器將觸發該事件並按計劃的時間間隔調用您的方法。他們可能會調用你的方法,而它的另一個實例正在運行,除非你在開始處理(DoWork)時停止定時器,並在你完成後再次啓動它(但你可能會錯過定時事件)。

循環和睡眠的方法在忙時不會被調用。這裏的「優勢」是您可以使用DoWork,然後再次發現下一個計時器事件已經通過並且DoWork立即生效。另一種方法是,無論您的DoWork方法花了多長時間,您都有休息時間可供您休息一段指定的時間。

相關問題