這裡講下,quartz這種任務調度程式的簡單使用 這是使用的quartz的3.x 版本 2.x 版本與此稍有區別,可以在網上查看2.x版本教程 使用語言為c# quartz的使用分為幾個步驟 其中2步驟也可以放到步驟5後面 另外,別忘記在nuget管理器中引入quartz 代碼如下 運行程式,效果圖 ...
這裡講下,quartz這種任務調度程式的簡單使用
這是使用的quartz的3.x 版本
2.x 版本與此稍有區別,可以在網上查看2.x版本教程
使用語言為c#
quartz的使用分為幾個步驟
- 創建一個ISchedulerFactory,然後並且獲取 Scheduler
- 啟動 Scheduler
- 創建 job 任務
- 創建 trigger 觸發器
- 使用觸發器規劃執行任務( Tell quartz to schedule the job using our trigger)
其中2步驟也可以放到步驟5後面
另外,別忘記在nuget管理器中引入quartz
代碼如下
class Program { /// <summary> /// 入口程式 /// </summary> /// <param name="args"></param> static void Main(string[] args) { Run(); Console.ReadKey(); } /// <summary> /// 任務調度的使用過程 /// </summary> /// <returns></returns> public async static Task Run() { // 1.創建scheduler的引用 ISchedulerFactory schedFact = new StdSchedulerFactory(); IScheduler sched = await schedFact.GetScheduler(); //2.啟動 scheduler await sched.Start(); // 3.創建 job IJobDetail job = JobBuilder.Create<SimpleJob>() .WithIdentity("job1", "group1") .Build(); // 4.創建 trigger ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever()) .Build(); // 5.使用trigger規劃執行任務job await sched.ScheduleJob(job, trigger); } } /// <summary> /// 任務 /// </summary> public class SimpleJob : IJob { public virtual Task Execute(IJobExecutionContext context) { return Console.Out.WriteLineAsync($"job工作了 在{DateTime.Now}"); } }
運行程式,效果圖如下:
每5秒執行一次
另外,在實際項目使用中,可以進行把上面步驟拆開,封裝進行使用
例如,可以把步驟1,步驟2封裝到一起,即用來產生 scheduler
把 步驟3,步驟4,步驟5 封裝到一起,用來給不同的任務 scheduler(相當於註冊不同的 job ,trigger)
另外,還有更多的quartz的用法
這裡附上繼續學習網址: