我需要一种每 5 分钟准确运行一次的方法。我不能使用 Timer,因为我注意到它会慢慢变得不同步(即它最终会在 00:01、00:06、00:11、00:16 等时间运行)。
虽然它需要准确,但我不需要它太精确。每 5 分钟 +/- 1 秒就可以了,只要经过几天的跑步,它仍然会在 5 分钟标记上准确滴答。
到目前为止,我想到的是创建一个间隔为 1 秒的计时器,它不断检查 DateTime.Now 以查看下一个 5 分钟标记是否已通过。我想知道是否有更优雅的解决方案或我错过的 C# 库中的某些内容。
编辑:我现在有以下模板,可以满足我的要求。
public class ThreadTest
{
private Thread thread;
private long nextExecutionTime;
private long interval;
public void StartThread(long intervalInMillis)
{
interval = intervalInMillis * TimeSpan.TicksPerMillisecond;
nextExecutionTime = DateTime.Now.Ticks;
thread = new Thread(Run);
thread.Start();
}
private void Run()
{
while (true)
{
if (DateTime.Now.Ticks >= nextExecutionTime)
{
nextExecutionTime += interval;
// do stuff
}
}
}
}