C# 排程套件: Quartz

May 23, 2016

2 mins read

Quartz 套件

簡介

Quartz是個排程套件

安裝

$ install-package Quartz

建立Job

namespace ConsoleApplication1
{
    using System;
    using Quartz;

    [DisallowConcurrentExecution]
    internal class MyJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("do job");
        }
    }
}

建立排程

namespace ConsoleApplication1
{
    using Quartz;
    using Quartz.Impl;

    internal class Program
    {
        private static void Main(string[] args)
        {
            // 建立排程器
            var schedulerFactory = new StdSchedulerFactory();
            var schedular = schedulerFactory.GetScheduler();

            // 建立Job
            IJobDetail job = JobBuilder.Create<MyJob>()
                .WithIdentity("MyJob")
                .Build();

            // 建立Trigger
            ITrigger trigger = TriggerBuilder.Create()
                .WithCronSchedule("0 0/1 * * * ?")
                .WithIdentity("MyJobTrigger")
                .Build();

            // Job配對Trigger
            schedular.ScheduleJob(job, trigger);

            // 啟動排程器
            schedular.Start();
        }
    }
}

注意事項

  • 排程是固定周期觸發,和Job的執行時間無關
  • 每次觸發都會重新建立一個全新的Job物件
  • 在Job上加入DisallowConcurrentExecution來限制每次只能執行一個Job

Sharing is caring!