Quartz.NET是一個開源的作業調度框架,非常適合在平時的工作中,定時輪詢數據庫同步,定時郵件通知,定時處理數據等。 Quartz.NET允許開發人員根據時間間隔(或天)來調度作業。它實現了作業和觸發器的多對多關系,還能把多個作業與不同的觸發器關聯。整合了 Quartz.NET的應用程序可以重用來自不同事件的作業,還可以為一個事件組合多個作業。
使用時需要引用:Quartz.dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace demo1_querz.net
{
class Program
{
static void Main(string[] args)
{
new SimpleExample1().Run();
Console.Read();
}
}
}
配置簡單定時任務
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace demo1_querz.net
{
class SimpleExample1:IExample
{
public string Name
{
get { return "Simple Task One"; }
}
public virtual void Run()
{
// First we must get a reference to a scheduler
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler();
// job 1 will run every 20 seconds
IJobDetail job = JobBuilder.Create<SimpleJobOne>()
.WithIdentity("job1", "group1")
.Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithCronSchedule("10 0/1 * * * ? ")
.Build();
DateTimeOffset ft = sched.ScheduleJob(job, trigger);
sched.Start();
}
}
}
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace demo1_querz.net
{
public class SimpleJobOne:IJob
{
//需要繼承IJob
public virtual void Execute(IJobExecutionContext context)
{
JobKey jobkey = context.JobDetail.Key;
new SendMsg().FuRun();
}
}
}
需要執行的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace demo1_querz.net
{
public class SendMsg
{
public void FuRun()
{
Console.WriteLine("Prefrom Simple Task One time as "+DateTime.Now.ToString());
}
}
}
運行結果為:每分鐘執行一次 Simple Task One

參考
官方學習文檔:http://www.quartz-scheduler.net/documentation/index.html
使用實例介紹:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html