Quartz.Net是一個從java版的Quartz移植過來的定時任務框架,能夠實現異常靈活的定時任務。java
Quartz 有三個概念分別是 計劃者(ISchedeler)、工做(IJob)、觸發器(Trigger)。框架
給計劃者(Schedeler)一個工做(Job),讓他在Trigger(某個條件)觸發的條件下執行這個工做(Job),將要定時執行的任務代碼寫到實現IJob接口的Execute方法中便可使用,時間到來的時候Execute方法會被調用。ide
首先安裝nuget包 : Quartzui
建立Job:spa
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 }
建立計劃者,觸發器:code
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 }
執行結果:blog
cron表達式 參考 http://cron.qqe2.com/ 接口