gpt4 book ai didi

c# - System.Threading.Timer 是否依赖于系统时间是否正确?

转载 作者:太空狗 更新时间:2023-10-29 21:59:13 24 4
gpt4 key购买 nike

我有一个基于 System.Threading.Timer 每 30 分钟运行一次作业的服务。计时器像往常一样设置一个间隔,并异步触发作业。

昨晚,它所在的服务器上的时间决定将自身重置为与实际时间和日期完全不同的时间。随后,我的作业不再每 30 分钟运行一次 - 事实上它们完全停止了。

但是,在今天早上重置时间后,下一个 30 分钟的任务自行运行(30 分钟后),然后所有其他任务同时自行运行,就好像它们已经排了一整夜一样。

任何人都可以阐明这一点吗?

编辑:作为更新 - 使用另一个计时器 (System.Timers.Timer) 并且发生了完全相同的事情。时间变为完全不同的东西,然后服务停止完成其任务,直到时间在早上重新设置,然后 30 分钟后它运行所有任务,这些任务自时间更改后应该每 30 分钟运行一次!

最佳答案

我无法复制导致这种情况的场景。

使用这段代码

class Program
{
private static Timer timer;
private static readonly Stopwatch stopwatch = new Stopwatch();

static void Main(string[] args)
{
timer = new Timer(Tick);
stopwatch.Start();
timer.Change(30000, Timeout.Infinite);
Console.ReadLine();
}

private static void Tick(object obj)
{
stopwatch.Stop();
Console.WriteLine(stopwatch.Elapsed.Seconds);
}
}

我启动应用程序,将本地计算机时间更改为 future 20 秒。在我启动应用程序 30 秒后,Tick 方法仍然被调用。秒表显示 30,而我的手机计时器显示 30。

关于c# - System.Threading.Timer 是否依赖于系统时间是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7526199/

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