惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
Last Week in AI
Last Week in AI
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
The Cloudflare Blog
罗磊的独立博客
月光博客
月光博客
N
Netflix TechBlog - Medium
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Jina AI
Jina AI
J
Java Code Geeks

博客园 - 魔幻天空

TFS2012常见问题及解答 UI线程同步 作业调度框架 Quartz.NET 2.0 StepByStep 单机安装“完整”SharePoint 2010 WinDbg / SOS Cheat Sheet 《Dissecting SQL Server Execution Plans》随记 LightSwitch™初体验 .关于 WCF Binding 中 OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout 的解释(转载) 轻松掌握用SQL来合并查询 WF4.0 RC 官方示例 Silverlight 3和Expression 3将于7月10日发布 【原】Winfrom的自动更新模块 【转蝈蝈俊.net 】SQL Server 2005 配置发送邮件 [转自MSDN]根据FxCop整理的.NET代码编写规范 谁在TDD 【转】IIS HTTP500错误以及COM+应用程序8004e00f错误的解决方法 每日见闻(一) 【转】30个优秀.net在线学习资源站点 开源许可证简单总结
作业调度框架 Quartz.NET 2.0 StepByStep(2)
魔幻天空 · 2012-02-08 · via 博客园 - 魔幻天空

通过上一篇文章,相信大家对Quartz.Net有了基本的了解,并可以建立最简单的服务了。本篇将着重讲解其中的Trigger,也就是如何设定服务的触发条件。

按照情景,我在工作中一般会遇到以下几种情景

1.服务开始时执行

  这个Trigger我们在上篇的实例中已经使用过,话不多说,直接上代码

ITrigger trigger = TriggerBuilder.Create().StartNow().Build()

2.在指定时间间隔内轮询执行

   利用框架中自带的SimpleTriggerImpl,就能轻松实现这类型触发器构造,下面列出常用的几个构造重载:

  • SimpleTriggerImpl(string name, int repeatCount, TimeSpan repeatInterval)
  • SimpleTriggerImpl(string name, DateTimeOffset startTimeUtc, DateTimeOffset? endTimeUtc, int repeatCount, TimeSpan repeatInterval)

   例如:

View Code

    SimpleTriggerImpl(string name, int repeatCount, TimeSpan repeatInterval)
 SimpleTriggerImpl(string name, DateTimeOffset startTimeUtc,
DateTimeOffset? endTimeUtc, int repeatCount, TimeSpan repeatInterval)

   这个触发器的含义是,开始时间为立即开始(需要UTCNOW)+结束时间无+重复次数1(注意是重复次数JOB会执行两次)+轮询间隔10秒

3.日轮询执行

   利用框架中自带的DailyTimeIntervalTriggerImpl,就能轻松实现这类型触发器构造,下面列出常用的几个构造重载:

  • DailyTimeIntervalTriggerImpl(String name, TimeOfDay startTimeOfDayUtc, TimeOfDay endTimeOfDayUtc, IntervalUnit intervalUnit, int repeatInterval)
  • DailyTimeIntervalTriggerImpl(string name, DateTimeOffset startTimeUtc,DateTimeOffset? endTimeUtc, TimeOfDay startTimeOfDayUtc, TimeOfDay endTimeOfDayUtc, IntervalUnit intervalUnit, int repeatInterval)

    例如:

View Code

DailyTimeIntervalTriggerImpl trigger = new DailyTimeIntervalTriggerImpl("DailyTimeIntervalTrigger",DateTimeOffset.UtcNow,null, new TimeOfDay(1, 0, 0), new TimeOfDay(22, 01, 00), IntervalUnit.Minute, 1);
trigger.DaysOfWeek.Add(DayOfWeek.Monday);

    这个触发器的含义是,开始时间为立即开始(需要UTCNOW)+结束时间无+每天凌晨1点开始每天22:01分结束+每分钟轮询+重复次数1+仅每周一执行

4.复杂的时间设定

   如果想构建有如SqlServerJob设置般灵活的时间设定,那么就需要用到CronTriggerImpl这个类了,使用方法很简单,直接在构造里放入Cron表达式即可

ITrigger trigger = new CronTriggerImpl("CronTrigger", "TriggerGroup1", "0 0 12 * * ?");

  这个触发器的含义是,每天中午12点执行

  注:这部分小弟未曾深入了解,加之这部分API也没有修改,就不班门弄斧了。请自行搜索Cron表达式/Cron expression