gpt4 book ai didi

C# 计时器在整秒开始

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

有没有办法运行 Timer 使其在整秒开始?

stateTimer = new Timer(someCallback, null, 0, 1000);

这将立即开始,每秒重复一次,但问题是它会在我运行程序时准确开始,这可能导致 13:14:15.230 开始。

我想从 13:14:15.000 开始。像这样的东西:

stateTimer = new Timer(someCallback, null, DateTime.Now.Date, 1000);

这可能吗?

编辑:

完成控制台日志后:

Console.WriteLine($"Time: {DateTime.Now.ToString("HH:mm:ss.fff")}");

我注意到 1 秒间隔实际上增加了超过 1 秒(每次迭代大约 1.02),因此在 50 次迭代后跳过一秒。我通过让计时器每 800 毫秒运行一次来​​解决我的问题。不是理想的解决方案,但它有效,并且永远不会跳过第二个(并且我可以两次触发相同的第二个)。

stateTimer = new Timer(someCallback, null, 0, 800);

最佳答案

不,那是不可能的。这将要求您确切地知道 CPU 认为什么时候开始执行您的定时器代码是个好主意。即使您在剩余时间内 Thread.Sleep,也并不意味着代码会在您想要的毫秒级执行。

相反,如果您只想为格式化而执行此操作,则可以使用自定义日期/时间格式来执行此操作。

关于C# 计时器在整秒开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40241371/

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