2015-05-25 15 views
1

我有一個長時間運行的任務,我想在運行結束後以固定的時間間隔安排新的運行,並且我找到了它。以下是什麼意思?特別是最後一段。鏢定時器定期記錄令人困惑

Timer.periodic(持續時間的持續時間,函數void回調(定時器定時器))

創建一個新的重複的計時器。

該回調將以持續時間間隔重複調用,直到取消功能取消 。

確切的時間取決於基礎的計時器實現。沒有 持續n次的回調將會發生n次以上,但兩次連續回調之間的時間爲 的持續時間可以短於且長於 。

特別是,實現可以安排下一次回調,例如, 持續時間後,既可以當先前的回調結束,當 以前的回調開始,或當先前的回調原定 的 - 即使實際回調被延遲。

+0

它說,回調將被定期調用,無論前面的狀態如何s是在。 – Robert

回答

1

假設您設置一個計時器,每30秒運行一次。如果回調把它叫做第二次需要10秒即可完成,回調的第三個電話可能是:第二個電話後

  • 30秒開始
  • 30秒,第二次呼叫結束後(這是在第二次呼叫開始後40秒,因爲它需要10秒)
  • 第二次呼叫計劃運行後30秒(基於上述情況,可能已經延遲,例如通過第一次呼叫的持續時間)
+0

這是問題的工作'可能'。所以在不同的系統上它會有不同的行爲,這是非常混亂的。 – richard

+0

這是正確的。具體的細節留待實施,但「n次不超過n次回調」。大多數情況下都應該沒問題(例如,每隔大約x分鐘輪詢一次),但不能作爲精確的計時器。 –