Quartz.Net是一个从java版的Quartz移植过来的定时任务框架,可以实现异常灵活的定时任务。
Quartz 有三个概念分别是 计划者(ISchedeler)、工作(IJob)、触发器(Trigger)。
给计划者(Schedeler)一个工作(Job),让他在Trigger(某个条件)触发的条件下执行这个工作(Job),将要定时执行的任务代码写到实现IJob接口的Execute方法中即可使用,时间到来的时候Execute方法会被调用。
首先安装nuget包 : Quartz
创建Job:
1 public class JobTest : IJob 2 { 3 public Task Execute(IJobExecutionContext context) 4 { 5 return Task.Run(() => 6 { 7 try 8 { 9 Console.WriteLine("任务执行啦" + DateTime.Now); 10 } 11 catch (Exception ex) 12 { 13 ILog log = LogManager.GetLogger(typeof(JobTest)); 14 log.Error("定时任务出错", ex); 15 } 16 }); 17 } 18 }
创建计划者,触发器:
1 private static void Main(string[] args) 2 { 3 IScheduler sched = new StdSchedulerFactory().GetScheduler().Result;//定义计划者 4 JobDetailImpl jbBossReport = new JobDetailImpl("JobTest", typeof(JobTest));//时间到来时,执行TestJob类中的context方法。同时给该执行任务命名为jdTest 5 var triggerBossReport = CronScheduleBuilder.CronSchedule("0/7 * * * * ?").Build(); //确定触发器 6 triggerBossReport.Key = new TriggerKey("triggerJobTest");//触发器命名为triggerJobTest 7 sched.ScheduleJob(jbBossReport, triggerBossReport);//计划者sched在触发器triggerBossReport执行的时候,进行jbBossReport工作。 8 sched.Start(); 9 Console.ReadKey(); 10 }
执行结果:
cron表达式 参考 http://cron.qqe2.com/
详细参考:https://www.cnblogs.com/MicroHeart/p/9402731.html