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