Quartz.Net 使用心得(二)
工作中需要做一个简易的Cron字符串生成器,并且要获取生成的Cron后面10次的触发时间来验证。
此问题困扰了我很久时间,CSDN上有一个Java版本的,本人菜鸟,想移植到C#中,语法上怎么也不通过。其它中文网站根本搜不到,最终在一个老外网站帮助下,搞定了这个问题。并且研究出了两个方法,小佩服一下我自己。
方法一:
/// <summary>
/// 测试Cron字符串的正确性并给出8次执行的时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTest_Click(object sender, EventArgs e)
{
if (!Quartz.CronExpression.IsValidExpression(txtCron.Text))//验证Cron字符串的正确性
{
txtResult.Text = "不正确的Cron表达式:" + txtCron.Text;
return;
}
txtResult.Text = "";
ITrigger trigger = TriggerBuilder.Create()
.WithCronSchedule(txtCron.Text) //时间表达式
.Build(); DateTimeOffset origin = new DateTimeOffset(DateTime.Now);
DateTimeOffset end = origin.AddYears();//把统计的区间段设置为2年后
//DateTimeOffset? dt = trigger.GetNextFireTimeUtc();//下一次执行的时间
IList<DateTimeOffset> dates = TriggerUtils.ComputeFireTimesBetween(trigger as IOperableTrigger, null, origin, end);
//trigger as IOperableTrigger注意这一句非常关键
for (int i = ; i < ; i++)
{
txtResult.AppendText("第" + (i + ) + "次执行的时间:" + dates[i].ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + "\r\n");
}
}
方法二:
/// <summary>
/// 测试Cron字符串的正确性并给出8次执行的时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTest_Click(object sender, EventArgs e)
{
if (!Quartz.CronExpression.IsValidExpression(txtCron.Text))//验证Cron字符串的正确性
{
txtResult.Text = "不正确的Cron表达式:" + txtCron.Text;
return;
}
txtResult.Text = "";
ITrigger trigger = TriggerBuilder.Create()
.WithCronSchedule(txtCron.Text) //时间表达式
.Build(); var ttimes = TriggerUtils.ComputeFireTimes(trigger as IOperableTrigger, null, );
for (int i = ; i < ; i++)
{
txtResult.AppendText("第" + (i + ) + "次:" + ttimes[i].ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + "\r\n");
}
}
Quartz.Net 使用心得(二)的更多相关文章
- Spring的quartz定时器重复执行二次的问题解决
Spring的quartz定时器同一时刻重复执行二次的问题解决 最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的ha ...
- Android studio使用心得(二)— 打包签名apk发布
1.—–Android Studio菜单 Build->Generate Signed APK 2.——Create new.. 3.——-跟eclipse里面一样,添加keystore 信 ...
- 关于学习JavaScript 的 高三编程 一些心得(二)
今天在看高三的过程中,解决了之前我在 面试过程中遇到的一个问题. 就是将一段英文 颠倒过来. 下面就是我的代码: var zhang = "my name is zhangge !" ...
- Quartz.NET总结(二)CronTrigger和Cron表达式
Quartz.NET的任务调度,主要就是依靠CronTrigger和Cron表达式.Cron是已经在UNIX存在了很长一段时间,它有着强大和可靠的调度能力.CronTrigger类也正是是基于Cron ...
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- Quartz定时任务学习(二)web应用
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- 深入理解Java虚拟机阅读心得(二)
垃圾收集 程序计数器.虚拟机栈.本地方法栈三个区域随线程而生,随线程而灭:这几个区域的内存分配和回收都具备稳定性,不需要过多的考虑回收的问题.而Java堆和方法区则不一样. Java堆中存储了几乎所有 ...
- Quartz.Net进阶之二:关于触发器的更多信息
与作业一样,触发器相对容易使用,但是在您可以充分利用Quartz.NET之前,确实需要了解和理解各种可自定义的选项. 此外,如前所述,您可以选择不同类型的触发器来满足不同的调度需求. 1.常见触发器属 ...
- Java 基于quartz实现定时 之二(XML方式配置)
<!-- 在spring核心配置文件中进行如下配置 --> <!-- Spring基于quartz定时任务 --> <bean id="triggerByBea ...
随机推荐
- DFS(连通块) HDU 1241 Oil Deposits
题目传送门 /* DFS:油田问题,一道经典的DFS求连通块.当初的难题,现在看上去不过如此啊 */ /************************************************ ...
- Windows下重置MySQL密码【MYSQL】
使用环境:win10 x64企业版 关闭正在运行的MySQL服务. 打开DOS窗口,转到mysqlbin目录. 输入mysqld --skip-grant-tables回车.如果没有出现提示信息,那就 ...
- LINQ数据库技术
LINQ(Language Integrated Qyery),中文名字是语言集成查询.它提供一个统一的编程概念和语法,编程人员不需要关心将要访问的是关系数据库还是XML数据,或是远程的对象,它都采用 ...
- JSP&&EL&&JSTL
JSP = JAVA + HTML + JSP自身的东西 JSP的脚本 <%! %> :翻译成Servlet中的成员内容. 定义变量,方法,类. -- ...
- HTTP的报文格式、GET和POST格式解析
1. HTTP报文格式 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文.请求报文一个HTTP请求报文由请求行(re ...
- redis学习-字典
1.字典作用 实现数据库键空间(key space): 用作 Hash 类型键的底层实现之一: 2.字典实现的数据结构 typedef struct dict { // 特定于类型的处理函数 dict ...
- Wrapping calls to the Rational Functional Tester API——调用Rational Functional Tester封装的API
转自:http://www.ibm.com/developerworks/lotus/library/rft-api/index.html The Rational GUI automation to ...
- POJ_3565_Ants
题意:给出N个白点和N个黑点,要求用N条不相交的线段把它们连接起来,其中每条线段恰好连接一个白点和一个黑点,每个点恰好连接到一条线段. 分析:因为有结点黑白两色,我们不难想到构造一个二分图,其中每个白 ...
- 网络编程基础_4.1TCP_服务端
TCP_服务端 #include <stdio.h> // 1. 包含必要的头文件和库, 必须位于 windows之前 #include <WinSock2.h> #pragm ...
- Python的伪造数据库:Faker
faker 是一个可以让你生成伪造数据的Python包,在软件需求.开发.测试过程中常常需要利用一些假数据来做测试,这种时候就可以使用 Faker 来伪造数据从而用来测试. 一.Faker安装 pip ...