2011-12-22 17 views
1

我有一個計時器,我想知道它是否有效或不測試它是否是第一次計時器提高過期事件(我想在第一次發生Elapsed事件後更改Interval屬性)第一次測試Elapsed事件。高效還是無用?

 _timer = new Timer(1000); 
     _timer.Elapsed += 
      (src, e) => 
      { 
       FireTrigger(this, EventArgs.Empty); 
       if (isfirstTimeElapsed) // necessary ?? 
       { 
        _timer.Interval = 5000 
        isfirstTimeElapsed = false; 
       } 
      }; 

在表現方面什麼是最佳選擇?測試與否?

回答

3

它當然不是無用的,它是自我記錄代碼,意味着任何人立即閱讀它都會理解您想要在第一次運行時更改間隔。如果你跳過了if,並且每次都設置間隔,那麼可能並不明顯,爲什麼你這樣做。就效率而言,我懷疑你會注意到有什麼不同,但是當然如果你擔心然後進行一些測試。

2

您可以使用System.Threading.Timer,其中當第一個事件應該被解僱,你可以設置,而其他的

+0

+1 - 這將是我的首選 – ChrisBD 2011-12-22 09:48:56

+0

好了,有沒有其他影響使用的System.Threading .Timer而不是System.Timers.Timer? – Florian 2011-12-22 09:55:41

+1

http://msdn.microsoft.com/en-us/magazine/cc164015.aspx是一篇關於比較三種不同.NET計時器類的文章。我懷疑這可能會回答你的問題。這取決於你在做什麼,以及哪些可能是最好的。 – Chris 2011-12-22 10:03:20