码迷,mamicode.com
首页 > Web开发 > 详细

开源作业调度框架 - Quartz.NET - 实战使用2

时间:2016-06-28 12:40:30      阅读:875      评论:0      收藏:0      [点我收藏+]

标签:

纠正第一篇文章的一个错误代码。

下面是错误代码,这样并不能得知系统中是否已经存在该JobId

//实例化一个作业Key对象,用于获取作业对象或判断是否存在作业时使用。
JobKey jobKey = new JobKey(identity);

//通过作业Ke对象 获取已经添加过同一个作业,(如果没有为NULL)
IJobDetail job = scheduler.GetJobDetail(jobKey);

//检查调度中是否存在该作业,存在并且参数有变化就删除作业。
if (scheduler.CheckExists(jobKey) && job.JobDataMap["cron"].ToString() != cron)
{
    scheduler.DeleteJob(jobKey);
}

正确获取JobKey和IJobDetail对象的方法如下

这种方法使用Job的GroupName组名进行匹配查找,先将该组所有的JobKey返回再进行循环查找,

什么?你没有设置GroupName?

技术分享技术分享技术分享

如果没有设置GroupName则GroupName为DEFAULT

当然也可以用GroupMatcher<JobKey>的其它方法进行匹配如

AnyGroup();
GroupContains(string compareTo);
GroupStartsWith(string compareTo);
GroupEndsWith(string compareTo);
GroupEquals(string compareTo);

//首先需要根据组名来查找到JobKey的ISet集合。
GroupMatcher<JobKey> matcher = GroupMatcher<JobKey>.GroupEquals(groupName);

//注意:这里并不是System.Collection中的ISet<T>。
Quartz.Collection.ISet<JobKey> keys = scheduler.GetJobKeys(matcher);

//使用枚举对象循环查找
var en = keys.GetEnumerator();

while (en.MoveNext())
{
    string rowid = en.Current.Name.Replace("reportTime", "");
    if (dt.Select("id=‘" + rowid + "").Length == 0)
    {
        LogHelper.AddLog("定时模块", "检测该计划配置信息已不存在,将删除定时计算任务。", "");

        scheduler.DeleteJob(en.Current);
    }
}

 

开源作业调度框架 - Quartz.NET - 实战使用2

标签:

原文地址:http://www.cnblogs.com/jgjgjg23/p/5622762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!