c#之quartz任務調度的使用


 

這里講下,quartz這種任務調度程序的簡單使用

這是使用的quartz的3.x 版本

2.x 版本與此稍有區別,可以在網上查看2.x版本教程

使用語言為c#

 

quartz的使用分為幾個步驟

  1. 創建一個ISchedulerFactory,然后並且獲取 Scheduler
  2. 啟動 Scheduler
  3. 創建 job 任務
  4. 創建 trigger 觸發器
  5. 使用觸發器規划執行任務( 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的用法

這里附上繼續學習網址:

quartz學習

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM