在 c# 中不使用定时器 class 进行调度

Scheduling without use of timer class in c#

我需要一个建议。如何在不使用定时器 class 的情况下在 C# 中进行调度,因为它占用内存。虽然如果高效地使用 Timer 不是问题,但我需要一个长期的调度过程。请分享您在不使用计时器的情况下进行日程安排的建议。

您可以尝试像这样的基本操作:

public class TimeSchedule
{
    private bool hasRun;
    private DateTime targetDate = new DateTime(2015,5,26);

    private void Schedule()
    {
        while (!hasRun)
        {
            if (DateTime.Now.Date < targetDate)
            {
                //Do something
                hasRun = true;
            }
            else
            {
                Thread.Sleep(1000);
            }
        }
    }

    public void Start()
    {
        var thread = new Thread(Schedule);
        thread.Start();
    }
}

一切都会占用内存。

如果你只想延迟 x 的某些事情,你可以直接睡觉,但这对于大多数用法来说是一个糟糕的模式,但对于一个简单的控制台类型的应用程序,你想暂停并在 x 分钟内做一些事情,它会是美好的。如果你在异步代码中,你也可以使用

await Task.Delay(10000);

如果您希望在一天中的特定时间 运行 执行某些操作,那么如评论中所述,windows 计划任务可能会更好。例如,没有仅在 11:11AM 时执行 X() 的服务。

另外,阅读这篇文章C# Timer and memory leak and When my timer ticks.... .NET Memory Leak(它们都归结为非问题)