我有用C#編寫的服務。服務是全天候活動,但一個線程通過Thread.Sleep睡眠,直到預定時間 - 通常是晚上9點 - 晚上11點 - 執行一些內務處理任務。首次服務開始時,它會計算時間跨度,直到管理時間爲止,並使用該時間跨度調用Thread.Sleep。下一次該線程簡單地調用Thread.Sleep(24 * 60 * 60 * 1000)24小時睡眠。爲什麼Thread.Sleep長時間不精確?
它工作得很好,除了單一安裝當幾分鐘提前睡覺 - 根據跟蹤日誌提前5-8分鐘。幾個星期之後,家政服務時間會轉移幾個小時。我可以期待家務時間可以向前移動 - 而不是倒退。想知道是否有人可以有解釋。我必須承認,我不是在尋找解決問題的不同解決方案 - 只是試圖解釋這種行爲。
是系統時鐘本身的那臺機器上漂流? –
不要使用睡眠。 –
也許系統時鐘正在重置某處?對於調試,您可以讓另一個線程每10分鐘打印一條日誌行 –