实现定时器自动更新数据库表的最佳方法是什么?代码示例会很棒!我希望每24小时调用一次目标方法,这种方法每天18:30开火是可以接受的。
我正在使用c#
答案 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)
{ 在这里调用你的更新功能。
}
} 这段代码将永远运行。当满足时间条件时,它将更新数据库。