如何设置计时器以在每天的固定时间自动更新数据库表

时间:2016-12-06 08:21:53

标签: c#

实现定时器自动更新数据库表的最佳方法是什么?代码示例会很棒!我希望每24小时调用一次目标方法,这种方法每天18:30开火是可以接受的。

我正在使用c#

3 个答案:

答案 0 :(得分:0)

您可以通过多种不同方式执行您想要的操作,但使用第三方库通常是最安全的方法。所以我建议你Hangfire

您可以处理后台操作并安排它们。对于您的示例,您可以使用重复性作业。

RecurringJob.AddOrUpdate(
    () => Console.WriteLine("Recurring!"),
    Cron.Daily);

答案 1 :(得分:-1)

这是一个简单的课程。

class DailyTaskRunner
    {
        private DateTime _lastDateRun = DateTime.MinValue;

        Timer _timer;

        public DailyTaskRunner(TimeSpan timeOfDay, Action task)
        {
            _timer = new Timer((o) =>
            {
                if (DateTime.Now.TimeOfDay >= timeOfDay && DateTime.Today != _lastDateRun)
                {
                    _lastDateRun = DateTime.Today;
                    task();
                }

            }, null, 1, 1);
        }
    }

    void TestTask()
            {
                DailyTaskRunner r = new DailyTaskRunner(TimeSpan.FromHours(8) + TimeSpan.FromMinutes(43), () => Console.WriteLine("I'm a daily task, run at " + DateTime.Now.TimeOfDay.ToString()));

                Console.ReadLine();
            }

答案 2 :(得分:-3)

while(true)
{
if(DateTime.Now.Hour==18 && DateTime.Now.Minute==30)

{     在这里调用你的更新功能。

}

} 这段代码将永远运行。当满足时间条件时,它将更新数据库。