c#之quartz任務調度的使用

 

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

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

2.x 版本與此稍有區別,能夠在網上查看2.x版本教程async

使用語言爲c#學習

 

quartz的使用分爲幾個步驟ui

  1. 建立一個ISchedulerFactory,而後而且獲取 Scheduler
  2. 啓動 Scheduler
  3. 建立 job 任務
  4. 建立 trigger 觸發器
  5. 使用觸發器規劃執行任務( Tell quartz to schedule the job using our trigger)

其中2步驟也能夠放到步驟5後面 spa

 

另外,別忘記在nuget管理器中引入quartz.net

 

 

代碼以下code

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}");
        }
        
    }

 

運行程序,效果圖以下:htm

每5秒執行一次blog

 

 另外,在實際項目使用中,能夠進行把上面步驟拆開,封裝進行使用

例如,能夠把步驟1,步驟2封裝到一塊兒,即用來產生 scheduler 

把 步驟3,步驟4,步驟5 封裝到一塊兒,用來給不一樣的任務 scheduler(至關於註冊不一樣的 job ,trigger)

 

另外,還有更多的quartz的用法

這裏附上繼續學習網址:

quartz學習

相關文章
相關標籤/搜索