gpt4 book ai didi

c# - 为什么 Thread.Sleep 长时间不精确?

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:24 26 4
gpt4 key购买 nike

我有一个用 C# 编写的服务。服务全天候处于事件状态,但一个线程通过 Thread.Sleep 休眠直到预定时间(通常是晚上 9 点至晚上 11 点)以执行一些内务处理任务。第一次服务启动时,它以毫秒为单位计算直到管家时间的时间跨度,并使用该时间跨度调用 Thread.Sleep。下次线程只需调用 Thread.Sleep(24*60*60*1000) 即可休眠 24 小时。

除了单一安装,当 Sleep 提前几分钟唤醒时,它工作得很好——根据跟踪日志,提前 5-8 分钟。几个星期以来,家政服务时间变化了几个小时。我可以预期家务管理时间可以向前移动 - 而不是向后移动。想知道是否有人可以解释一下。我必须承认,我并不是在寻找解决问题的不同解决方案 - 只是试图解释这种行为。

最佳答案

Thread.Sleep 并非像您一样专为长时间准确 sleep 而设计。你应该使用类似 System.Threading.Timer 的东西.您可以将它的首次运行时间设置为午夜,然后让它每 24 小时关闭一次。 Timer(TimerCallback, Object, TimeSpan, TimeSpan)构造函数正是您要找的。

关于c# - 为什么 Thread.Sleep 长时间不精确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com