是否有一个.NET计时器在C#中可用,可以确保事件之间没有“漂移”?也就是说,如果您将计时器设置为每x秒,则经过一天运行,它不会漂移,即确保在一天中接近X秒事件的数量仍然与它应该是同步的?

如果没有,是否有一个众所周知的代码示例,它将在c#中包装定时器函数来执行此操作?

有帮助吗?

解决方案

抱歉只给您一个链接 quartz.net ,但这是一个完全合格的企业,测试,...库......你不需要重新发明轮子:)

如果您担心开销,您的开销定义是什么?是文件大小(二进制文件约为0,5MB)或逻辑中的开销。 对于逻辑部分:我认为实施他们的世代odicetagcode-界面是一个很好的工作来强制更好的消费者代码。我不是那个内联的大朋友 - 就像你可能会在定时器的反射时发射他们的指针) - 课程会给你带来更多的可能性,再次强制更好的OOP,域名设计,......。

但是:用quartz.net进行生成的acroodicetagcode将是矫枉过正...... :)

其他提示

我假设你已经尝试过一些东西,它漂移。

如果您希望在小时(5,10,15,20中的每5秒(5,10,15,20)上发射的东西.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();
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top