gpt4 book ai didi

每 X 秒触发一次的 C# 计时器,但与实时保持同步(即没有漂移)

转载 作者:太空狗 更新时间:2023-10-29 19:52:45 31 4
gpt4 key购买 nike

在 C# 中是否有可用的 .NET 计时器可以确保事件之间没有“漂移”?也就是说,如果您将计时器设置为每 X 秒关闭一次,那么在运行几天后它就不会漂移,即确保一天中 X 秒事件的接近数量与它应该保持同步?

如果没有,是否有一个众所周知的代码示例可以在 C# 中包装一个 Timer 函数来执行此操作?

最佳答案

我假设您已经尝试过一些东西,并且它会漂移。

如果你想从每小时(5、10、15、20..)开始每隔 5 秒触发一次,你可以将定时器设置为触发一次,然后在你的回调中,将定时器重置为在 DateTime 触发.Now + 到下一个 5 秒间隔的秒数。

只要您的时钟正确,这将防止任何漂移。

像这样

System.Timers.Timer timer = new Timer();

void Init()
{
timer.Elapsed += timer_Elapsed;
int wait = 5 - (DateTime.Now.Second % 5);
timer.Interval = wait*1000;
timer.Start();
}


void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
timer.Stop();
int wait = DateTime.Now.Second % 5;
timer.Interval = wait * 1000;
timer.Start();
}

关于每 X 秒触发一次的 C# 计时器,但与实时保持同步(即没有漂移),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3296784/

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