目录:
1.quartz.net任务调度:源码及使用文档
2.quartz.net插件类库封装
最近项目需要做一写任务作业调度的工作,最终选择了quartz.net这个插件,它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而 创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等.对于quartz.net在这就不进行过的介绍 了,下面针对这个插件的封装具体如下。
quartz.net的封装主要包括:
1.任务的基本操作(创建,删除,暂停,继续,状态查询,数量查询等)
2.任务执行触发动作的回调,其中回调用有两种委托雷响Action,Action<IQjob
3.持久化的处理,持久化文件保存到xml文件中(一个任务一个xml文件)
2、定义对象接口
对象分为对位接口(IQJob)和内部操作接口(IMJob).除了对象本身,接口还包括对对象的一些简单操作,比如Remove,pause,Resume等.这样的目的是为了让对象更便与操作。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Quartz { /// <summary> /// quartz.net接口对象 /// 作者:王延领 /// 时间:2016/5/5 /// </summary> public interface IQJob { /// <summary> /// 系统代码 /// </summary> string SysCode { get; set; } /// <summary> /// 任务id /// </summary> string JobId { get; set; } /// <summary> /// 任务名称 /// </summary> string Name { get; set; } /// <summary> /// 任务分组 /// </summary> string Group { get; set; } /// <summary> /// 间隔时间 /// </summary> int Seconds { get; set; } /// <summary> /// 做多执行次数,如果是<1,则无限循环 /// </summary> int MaxTimes { get; set; } /// <summary> /// 开始执行时间 /// </summary> DateTime StartTime { get; set; } /// <summary> /// 任务处理器 /// </summary> Action Handler { get; set; } /// <summary> /// 任务处理器 /// </summary> Action<IQJob> DetailHandler { get; set; } /// <summary> /// 当前执行的第几次 /// </summary> int Times { get; set; } /// <summary> /// 接口执行时间 /// </summary> DateTime LastTime { get; set; } /// <summary> /// 任务的当前状态 /// </summary> JobState State { get; set; } /// <summary> /// 本次任务执行的动作 /// </summary> JobAction Action { get; set; } /// <summary> /// 开始执行任务 /// </summary> void Start(); /// <summary> /// 开始执行任务 /// </summary> /// <param name="starttime">任务开始时间</param> /// <param name="internaltimes">间隔时间(s)</param> /// <param name="maxtimes">执行次数</param> void Start(DateTime starttime, int internaltimes = 60*60, int maxtimes = 0); /// <summary> /// 任务触发动作 /// 无需参数 /// </summary> /// <param name="action">触发的动作</param> /// <returns></returns> IQJob Handle(Action handler); /// <summary> /// 任务触发动作 /// </summary> /// <param name="action">触发的动作</param> /// <returns></returns> IQJob Handle(Action<IQJob> handler); string Key(); bool Load(); bool Save(); /// <summary> /// 下次运行时间 /// </summary> DateTime NextTime(); /// <summary> /// 获取job文件地址 /// </summary> /// <returns></returns> string Path(); /// <summary> /// 移除 /// </summary> /// <returns></returns> bool Remove(); /// <summary> /// 挂起 /// </summary> void Pause(); /// <summary> ///继续执行 /// </summary> void Resume(); } } using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Quartz { public interface IMyJob : IQJob { void Excute(); void QRemove(); void QPause(); void QResume(); } }