想知道一個定時器(線程)是否會在任務重新執行的等待期之前完成執行他的任務?定時器(線程)會在任務重新執行的等待期之前完成任務嗎?
0
A
回答
4
由定時器執行應該是折返回調方法,因爲 它呼籲線程池線程。如果定時器間隔爲 小於執行回調所需的時間,或者所有線程 池線程正在使用且回調隊列多次排隊,則可以在兩個線程池線程上同時執行回調 。
所以對於System.Threading.Timer的答案是否定的
4
正如@Clemens說,System.Threading.Timer
只是不斷滴答!
如果你要防止重入,您可以使用Monitor
,或像這只是一個標誌:
int _TimerLock = 0;
void TimerTickSafe(object state)
{
if (Interlocked.CompareExchange(ref _TimerLock, 1, 0) != 0) return;
try
{
TimerTick();
}
finally
{
Interlocked.Exchange(ref _TimerLock, 0);
}
}
如果計時器再次蜱而以前的滴答仍在運行,新的蜱會悄無聲息忽略。
相關問題
- 1. 等待取消的任務在繼續執行之前完成
- 2. 的Java定時器等待任務下一個任務之前完成開始
- 3. 吞噬更改等待任務完成之前執行更改
- 4. 在等待任務完成
- 5. 如何讓Grunt在運行另一個任務之前等待任務完成?
- 6. 等待任務運行? /任務完成時跳轉下一行?
- 7. 爲什麼在後臺線程不會等待任務完成?
- 8. C#等待任務完成
- 9. 等待任務完成
- 10. ScheduledExecutorService等待任務完成
- 11. JavaFX - 等待任務完成
- 12. 任務。完成任務之前任務完成
- 13. Java定時器 - 執行任務,等待,執行任務。沒有了Thread.sleep()
- 14. BitmapFactory.decodeStream線程安全嗎?有時我的Async任務在完成之前完成
- 15. 父任務不會等待子任務完成
- 16. Task.ContinueWith()父任務不會等待子任務完成
- 17. Executor:等待特定任務完成
- 18. 等待程序完成其任務
- 19. SSIS等待執行進程任務完成
- 20. 同時執行所有任務並等待完成?
- 21. 等待異步任務完成在開始Angular JS之前
- 22. 在迭代之前等待任務完成
- 23. sbt:在包裝之前等待任務完成
- 24. Java如何在返回控制之前等待任務完成
- 25. 當前任務完成時繼續執行任務
- 26. 在完成異步任務之前完成Jake任務
- 27. ContinueWith任務完成前任務運行
- 28. 等待後臺任務的完成
- 29. Robotium - 等待活動的任務完成
- 30. 的foreach等待任務完成
你可以輕鬆地測試它! –
'System.Windows.Forms.Timer' - 是的。 'System.Threading.Timer' - no。 'System.Timers.Timer' - no。 – Rotem