标签:quartz.net 任务调度 计划 定时执行 任务框架
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的两个种类,计划的配置等等。
标签:quartz.net 任务调度 计划 定时执行 任务框架
原文地址:http://blog.csdn.net/eye_cng/article/details/44261079