有沒有一種方法來檢測定時器已過去的事件是否重疊?例如,我在經過的事件之間創建了一個間隔爲200ms的定時器,但事件中執行的代碼耗時大於200ms。結果,在最後一個完成之前執行另一個已過去的事件。還有一種方法可以防止發生這種情況,以致在最後一個事件完成之前不會調用另一個事件?.NET - 定時器已經過的事件重疊
2
A
回答
1
如果你希望你的計時器事件發生在200ms的標誌,只是跳過一個(而不是推遲他們)如果前面的仍在運行,那麼你可以使用鎖碼。
如果您使用方法Monitor.TryEnter,那麼它將返回一個布爾值,告訴您它是否獲得了鎖(並且因此如果另一個線程已經在鎖定的代碼中)。這將使您能夠跳過並等待下一次運行時間(如果您想要的話)(或者寫出調試消息,抱怨其耗時過長或其他)。
這是否是一個好的解決方案真的取決於你的計時器想要做什麼。通常,其他人建議在上一次結束後爲下一個事件啓動計時器的方法對於工作來說已經足夠了。
0
看一看使用Timer.Stop Method
1
如果你想火下一週期後,當前已完成,停止計時,如果它擊中它的Tick事件,並重新啓動它,如果你就大功告成了。
Timer fires Tick-Event
Disable/Stop Timer
Program logic goes here
Restart Timer
相關問題
- 1. 確定哪些事件已經穿過
- 2. 如何在處理已經過的事件時阻塞計時器?
- 3. 註冊定時器已用事件
- 4. 經過事件
- 5. Titanium.Media.showCamera與重疊,通過事件
- 6. 自定義已經過時了
- 7. 如何從觸摸事件之前已經開始的定時器獲取值?
- 8. 定時器的SQL重複事件
- 9. 執行期間重疊的定時事件
- 10. 重定向和頭已經發出已
- 11. 計時器已經過去的事件處理程序,不能運行裏面的特定代碼
- 12. Silverlight:MouseLeftButtonDown定時器重複觸發事件
- 13. wpf動畫事件重疊
- 14. 防止NSManagedObjectContextDidSaveNotification事件重疊
- 15. UIButton觸摸事件重疊
- 16. 重疊事件區域
- 17. 檢測重疊事件
- 18. 過程主體已經過時,MySql的淨連接器
- 19. 我已經JavaScript的resize事件
- 20. 文件名'filename'已經存在VB .NET
- 21. 重定向URL已經在htaccess的
- 22. .NET MVC定時事件的行動
- 23. 綁定完成時的.NET事件
- 24. 如何轉換已經綁定到多重綁定的控件
- 25. 更新按鈕的定時器已消逝事件的狀態
- 26. 功能mcrypt_get_iv_size()已經過時 - Heroku的
- 27. 定時器和動畫事件勝過TouchesEnded事件
- 28. 指定的孩子已經有一個父和點擊事件
- 29. System.Timer已過去的事件似乎在.net
- 30. C#WinForm定時器 - 通知父類,定時器事件已被提出
你希望第二個電話在最後一個結束後200毫秒出現,還是立即? – Reddog 2010-12-21 08:11:35