Quartz.NET是一个任务调度的开源框架,官网地址是http://www.quartz-scheduler.net/index.html 帮助文档地址是http://www.quartz-scheduler.net/documentation/index.html
目前Quartz.NET的最新版本是2.3.1,本系列以后的文章都是基于这个版本的。先从官网下载2.3.1版本的rar,可在rar目录Src/Quartz.Examples下找到官方提供的一系列的例子,包括触发器操作,任务中断,数据库操作,集群等等。
Quartz.NET的应用场景非常多,只要和时间相关的操作均可以引用上去。比如每天定时任务(社保定时对账,自动收费定时确认),守护进程(自助机的监控)等等。
下面开始简单的例子:
1.首先引用相关dll:
2.初始化日志
在程序启动的时候初始化日志配置(我都是采用代码配置应用程序)
LogManager.Adapter = new ConsoleOutLoggerFactoryAdapter { Level = LogLevel.Info };新建一个任务类HelloJob,继承IJob,每个任务均需要继承自IJob
public class HelloJob : IJob
{
private ILog _log = LogManager.GetLogger(typeof(HelloJob));
public void Execute(IJobExecutionContext context)
{
_log.Info("Hello World!");
}
}
编写调用代码
public class SimpleExample
{
public static void Run()
{
ILog log = LogManager.GetLogger(typeof (SimpleExample));
// 获取计划工厂
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler();
//定义任务
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build();
//定义触发器
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.RepeatForever())
.Build();
//任务和触发器整合
sched.ScheduleJob(job, trigger);
//启动计划
log.Info("------- 开始计划 -----------------");
sched.Start();
log.Info("------- 等待20秒-----------------");
Thread.Sleep(TimeSpan.FromSeconds(20));
sched.Shutdown(true);
log.Info("------- 关闭计划 ---------------------");
}
}Quartz.NET 对于类的使用来说主要分为Shcedule(计划) Trigger(触发器) Job(任务)。
Job就是你需要执行的代码,Trigger就是Job的执行配置,Schedule就是承载Trigger和Job的容器。
接下来会分别学习Trigger的两个种类,计划的配置等等。
原文:http://blog.csdn.net/eye_cng/article/details/44261079