2014-01-26 30 views
1

我在Timer對象滴答的每個滴答間隔運行一些代碼。僅在VB.Net中的第一個計時器滴答事件中執行命令

有些代碼段我只想在第一次打勾時執行一次。我想避免在某個全局計數器中使用if語句,因爲我不想在事後每次打勾時評估語句(表現上看,它似乎相當昂貴,因爲我想運行數十萬次的tick事件時間儘可能快)。

所以我的問題是沒有人知道這樣做的任何技巧?另外,我想在一個更通用的編程環境中,我有興趣瞭解哪些可能的解決方案/模式可以在循環中只執行一次而不使用if語句。

編輯:想想這個,是否有可能有2個指針爲2個單獨的例程,其中一個包括第一次執行的代碼,另一個沒有。在第一個例程結束時,指向例程的指針可以切換到另一個例程?

+0

沒有一個簡單的布爾變量無法做到的。它並不昂貴,只需不到一納秒。你可以做到每秒超過*兆億次。計時器不能打勾超過每秒64次。想要在第一次「延遲」的情況下執行此操作比較奇怪,而不是在啓用計時器時立即執行此操作。 –

+0

謝謝,@HansPassant。這似乎是普遍的共識。你遲到是什麼意思?我希望在啓用計時器時立即執行此操作,但是想要將代碼限制在「tick tidiness」中,我想是。 – rex

+0

錯誤的「整潔」當然。仍然沒有你用lamda解決不了的問題。 –

回答

1

只需寫另一個子啓動計時器即可。在這個子程序中,首先執行你想要執行的代碼一次,然後啓動計時器。

Private Sub StartTimer(ByRef tmr as Timer) 
    DoStuffOnce() 
    tmr.Start() 
End Sub 

如果這不是你想要的,那麼你需要詳細說明你的問題。

順便說一句,檢查一個布爾變量需要幾微秒,我懷疑這將是你的代碼中的速率確定步驟。

相關問題