仅执行计划任务一次

问题描述 投票:-1回答:1

我正在尝试编写一些简单的计划任务,应该每隔一分钟执行一次(也就是当秒数为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;
            }
        }
    }

我希望不使用睡眠或延迟,而是希望按实际时间进行安排。有没有简单的方法来解决这个问题?

c# .net-core schedule
1个回答
0
投票

通过将代码更改为类似的代码来跟踪当前时间和下一个运行时间

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);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.