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