一、准备工作
1. 从官方网站:http://quartznet.sourceforge.net/ 下载
2. 解压后找到我们需要的dll包,如Quartz.NET-2.1.2bin4.0releaseQuartz
二、编译定时任务dll
1. 新建dll项目
2. 添加quartz发布包里边的Quartz.dll,Common.Logging.dll这两个dll到项目
3. 自己实现的工作类
using System;
using Quartz;
using Common.Logging;
using System.IO;
namespace quartzDemo
{
public classJobExecute_2 : IJob
{
#region IJob 成员
private static int n = 0;
public void Execute(IJobExecutionContext context)
{
ILog log = LogManager.GetLogger(typeof(JobExecute_2));
StreamWriter w = null;
try
{
n++;
w = new StreamWriter("D:\2.txt", true,System.Text.Encoding.UTF8);
w.WriteLine("------------------------------------");
w.WriteLine(n + " JobExecute_1正执行:时间:" + DateTime.Now);
w.WriteLine("------------------------------------");
System.Console.Out.WriteLine(n + " JobExecute_1正执行:时间:" +DateTime.Now);
}
finally
{
if (w != null)
{
w.Close();
w.Dispose();
}
}
}
#endregion
}
}
4. 编译出我们定时工作的dll
三、其他项目引用我们的定时工作dll
1.以web程序为例,添加引用定时工作dll和quartz发布包中的Quartz.dll,Common.Logging.dll等三个dll文件
2. 引用代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Quartz.Impl;
using Quartz;
using Quartz.Spi;
using Quartz.Impl.Triggers;
namespace QuartzServer
{
classProgram
{
static void Main(string[] args)
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler();
JobKey jobkey = new JobKey("job2", "group2");
IJobDetail job =JobBuilder.Create().WithIdentity(jobkey).Build();
IOperableTrigger trigger = new CronTriggerImpl("trigName","group1", "0/2 * * * * ?");
//不同的计划任务,trigger名称不可以相同!
sched.ScheduleJob(job, trigger);
sched.Start();
}
}
}
四、工作原理
Scheduler ---------主调度程序 --------- Quartz核心
Job---------作业 --------- 服务要做的(业务操作)
Trigger---------触发器 --------- 服务执行条件(何时执行操作)
Listener---------事件监听器 --------- 执行期事件(Job执行前后/Scheduler启动终止暂停时应该做什么,可以挂一些特定事件)
了解了这些概念之后,我们就可以组合这些概念并整理出开发的思路:先利用SchedulerFactory构建一个Scheduler,启动Scheduler,之后构建Job和Trigger,若有作业监听需求,在Listener上添加相应的处理程序,再将Job和Trigger关联后放入Scheduler
五、使用Windows服务定时调用我们的定时任务
把quartz作为独立的Windows任务,然后进行调用详见http://blog.sina.com.cn/s/blog_ad0672d60101ftur.html