只执行一次计划任务
Execute scheduled Task only once
我试图编写一些简单的计划任务,它应该每整分钟执行一次(也就是秒为 0 时),但不知何故它搞砸了。只要秒数为 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);
}
}
}
我试图编写一些简单的计划任务,它应该每整分钟执行一次(也就是秒为 0 时),但不知何故它搞砸了。只要秒数为 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);
}
}
}