我正在尝试编写一些简单的计划任务,应该每隔一分钟执行一次(也就是当秒数为0时执行),但是不知何故它被弄乱了。而不是只做一次工作,而是一遍又一遍地执行,只要秒为零。我试图通过使用bool指示器来防止这种情况,但这没用。
这是我的代码示例:
static void Main()
{
bool now = true;
while (true)
{
if (DateTime.Now.Second == 0 && now == true)
{
Console.WriteLine("now is: " + DateTime.Now);
now = false;
}
else
{
now = true;
}
}
}
我希望不使用睡眠或延迟,而是希望按实际时间进行安排。有没有简单的方法来解决这个问题?
通过将代码更改为类似的代码来跟踪当前时间和下一个运行时间
static void Main(string[] args)
{
var now = DateTime.Now;
var nextRunTime = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0).AddMinutes(1);
while (true)
{
var currentTime = DateTime.Now;
if (currentTime >= nextRunTime)
{
Console.WriteLine(currentTime);
nextRunTime = nextRunTime.AddMinutes(1);
}
}
}