只执行一次计划任务

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);
        }
    }
}