讲解

在线Cron表达式

调用(DLL下载)

  1. static void Main(string[] args)
  2. {
  3. //1、任务调度调用
  4.  
  5. //开启任务,操作数据,然后将数据广播给指定用户
  6. //Cron表达式 :秒 分钟 小时 日的日 月 某一天的周 年
  7. //每分钟执行
  8. //string CronTime = "0/5 * * * * ? ";//每隔5秒钟执行
  9. string CronTime = "1 * * * * ? * ";//每隔一分钟执行一次
  10. //附带参数
  11. string jobCode = "SysJob";
  12. string jobCode2 = "SpeackJob";
  13. JobDataMap map = new JobDataMap { };
  14. DateTimeOffset time = QuartzUtil.AddJob<SysJob>(jobCode, CronTime, map);//定时任务一
  15. DateTimeOffset time2 = QuartzUtil.AddJob<SpeackJob>(jobCode2, CronTime, map);//定时任务二
  16. Console.ReadKey();
  17.  
  18. }
  1. public class SysJob : IJob
  2. {
  3. /// <summary>
  4. /// 执行函数
  5. /// </summary>
  6. /// <param name="context"></param>
  7. public void Execute(IJobExecutionContext context)
  8. {
  9. try
  10. {
  11. JobKey jobkey = context.JobDetail.Key;
  12. Console.WriteLine($"{jobkey.Name}时间{DateTime.Now}");
  13.  
  14. }
  15. catch (System.Exception e)
  16. {
  17.  
  18. }
  19. }
  20. }
  1. class SpeackJob : IJob
  2. {
  3. public void Execute(IJobExecutionContext context)
  4. {
  5. JobKey jobkey = context.JobDetail.Key;
  6. Console.WriteLine($"{jobkey.Name}时间{DateTime.Now}");
  7. }
  8. }

定时任务帮助类QuartzUtil

  1. /// <summary>
  2. /// Quartz任务管理类
  3. /// </summary>
  4. public static class QuartzUtil
  5. {
  6. private static ISchedulerFactory sf = null;
  7. private static IScheduler sched = null;
  8.  
  9. static QuartzUtil()
  10. {
  11. sf = new StdSchedulerFactory();
  12. sched = sf.GetScheduler();
  13. sched.Start();
  14. }
  15.  
  16. /// <summary>
  17. /// 添加Job 并且以定点的形式运行 不带参数的cron表达式新建job
  18. /// </summary>
  19. /// <typeparam name="T"></typeparam>
  20. /// <param name="JobName"></param>
  21. /// <param name="CronTime"></param>
  22. /// <returns></returns>
  23. public static DateTimeOffset AddJob<T>(string JobName, string CronTime) where T : IJob
  24. {
  25. return AddJob<T>(JobName, CronTime, null);
  26. }
  27.  
  28. /// <summary>
  29. /// 添加Job 并且以定点的形式运行 参数为Cron表达式,可传参数。
  30. /// </summary>
  31. /// <typeparam name="T"></typeparam>
  32. /// <param name="jobName">keyName</param>
  33. /// <param name="cronTime">Cron表达式</param>
  34. /// <param name="jobDataMap">传递的参数</param>
  35. /// <returns></returns>
  36. public static DateTimeOffset AddJob<T>(string jobName, string cronTime, JobDataMap jobDataMap) where T : IJob
  37. {
  38. IJobDetail jobCheck = JobBuilder.Create<T>().WithIdentity(jobName, jobName + "_Group").SetJobData(jobDataMap).Build();//.UsingJobData("connIds", connIds).Build();
  39. ICronTrigger cronTrigger = new CronTriggerImpl(jobName + "_CronTrigger", jobName + "_TriggerGroup", cronTime);
  40.  
  41. if (sched.CheckExists(new JobKey(jobName, jobName + "_Group")))
  42. {
  43. sched.ResumeJob(new JobKey(jobName, jobName + "_Group"));
  44. }
  45. else
  46. {
  47. return sched.ScheduleJob(jobCheck, cronTrigger);
  48. }
  49. return new DateTimeOffset(DateTime.Now);
  50. }
  51.  
  52. /// <summary>
  53. /// 添加Job 并且以周期的形式运行
  54. /// </summary>
  55. /// <typeparam name="T"></typeparam>
  56. /// <param name="JobName"></param>
  57. /// <param name="SimpleTime">毫秒数</param>
  58. /// <returns></returns>
  59. public static DateTimeOffset AddJob<T>(string JobName, int SimpleTime) where T : IJob
  60. {
  61. return AddJob<T>(JobName, DateTime.UtcNow.AddMilliseconds(), TimeSpan.FromMilliseconds(SimpleTime));
  62. }
  63.  
  64. /// <summary>
  65. /// 添加Job 并且以周期的形式运行
  66. /// </summary>
  67. /// <typeparam name="T"></typeparam>
  68. /// <param name="JobName"></param>
  69. /// <param name="SimpleTime">毫秒数</param>
  70. /// <returns></returns>
  71. public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, int SimpleTime) where T : IJob
  72. {
  73. return AddJob<T>(JobName, StartTime, TimeSpan.FromMilliseconds(SimpleTime));
  74. }
  75.  
  76. /// <summary>
  77. /// 添加Job 并且以周期的形式运行
  78. /// </summary>
  79. /// <typeparam name="T"></typeparam>
  80. /// <param name="JobName"></param>
  81. /// <param name="SimpleTime"></param>
  82. /// <returns></returns>
  83. public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, TimeSpan SimpleTime) where T : IJob
  84. {
  85. return AddJob<T>(JobName, StartTime, SimpleTime, new Dictionary<string, object>());
  86. }
  87.  
  88. /// <summary>
  89. /// 添加Job 并且以周期的形式运行
  90. /// </summary>
  91. /// <typeparam name="T"></typeparam>
  92. /// <param name="JobName"></param>
  93. /// <param name="StartTime"></param>
  94. /// <param name="SimpleTime">毫秒数</param>
  95. /// <param name="jobDataMap"></param>
  96. /// <returns></returns>
  97. public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, int SimpleTime, string MapKey, object MapValue) where T : IJob
  98. {
  99. Dictionary<string, object> map = new Dictionary<string, object>();
  100. map.Add(MapKey, MapValue);
  101. return AddJob<T>(JobName, StartTime, TimeSpan.FromMilliseconds(SimpleTime), map);
  102. }
  103.  
  104. /// <summary>
  105. /// 添加Job 并且以周期的形式运行
  106. /// </summary>
  107. /// <typeparam name="T"></typeparam>
  108. /// <param name="JobName">JobKey</param>
  109. /// <param name="StartTime">开始时间</param>
  110. /// <param name="SimpleTime">时间差</param>
  111. /// <param name="jobDataMap">传递的参数</param>
  112. /// <returns></returns>
  113. public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, TimeSpan SimpleTime, Dictionary<string, object> map) where T : IJob
  114. {
  115. IJobDetail jobCheck = JobBuilder.Create<T>().WithIdentity(JobName, JobName + "_Group").Build();
  116. jobCheck.JobDataMap.PutAll(map);
  117. ISimpleTrigger triggerCheck = new SimpleTriggerImpl(JobName + "_SimpleTrigger", JobName + "_TriggerGroup",
  118. StartTime,
  119. null,
  120. SimpleTriggerImpl.RepeatIndefinitely,
  121. SimpleTime);
  122. return sched.ScheduleJob(jobCheck, triggerCheck);
  123. }
  124.  
  125. /// <summary>
  126. /// 修改触发器时间,需要job名,以及修改结果
  127. /// CronTriggerImpl类型触发器
  128. /// </summary>
  129. public static void UpdateTime(string jobName, string CronTime)
  130. {
  131. TriggerKey TKey = new TriggerKey(jobName + "_CronTrigger", jobName + "_TriggerGroup");
  132. CronTriggerImpl cti = sched.GetTrigger(TKey) as CronTriggerImpl;
  133. cti.CronExpression = new CronExpression(CronTime);
  134. sched.RescheduleJob(TKey, cti);
  135. }
  136.  
  137. /// <summary>
  138. /// 修改触发器时间,需要job名,以及修改结果
  139. /// SimpleTriggerImpl类型触发器
  140. /// </summary>
  141. /// <param name="jobName"></param>
  142. /// <param name="SimpleTime">分钟数</param>
  143. public static void UpdateTime(string jobName, int SimpleTime)
  144. {
  145. UpdateTime(jobName, TimeSpan.FromMinutes(SimpleTime));
  146. }
  147.  
  148. /// <summary>
  149. /// 修改触发器时间,需要job名,以及修改结果
  150. /// SimpleTriggerImpl类型触发器
  151. /// </summary>
  152. public static void UpdateTime(string jobName, TimeSpan SimpleTime)
  153. {
  154. TriggerKey TKey = new TriggerKey(jobName + "_SimpleTrigger", jobName + "_TriggerGroup");
  155. SimpleTriggerImpl sti = sched.GetTrigger(TKey) as SimpleTriggerImpl;
  156. sti.RepeatInterval = SimpleTime;
  157. sched.RescheduleJob(TKey, sti);
  158. }
  159.  
  160. /// <summary>
  161. /// 暂停所有Job
  162. /// </summary>
  163. public static void PauseAll()
  164. {
  165. sched.PauseAll();
  166. }
  167.  
  168. /// <summary>
  169. /// 恢复所有Job
  170. /// </summary>
  171. public static void ResumeAll()
  172. {
  173. sched.ResumeAll();
  174. }
  175.  
  176. /// <summary>
  177. /// 暂停某个任务
  178. /// </summary>
  179. /// <param name="JobName"></param>
  180. public static void PauseJob(string JobName)
  181. {
  182. JobKey jk = new JobKey(JobName);
  183. sched.PauseJob(jk);
  184. }
  185.  
  186. /// <summary>
  187. /// 恢复指定的Job
  188. /// </summary>
  189. /// <param name="JobKey"></param>
  190. public static void ResumeJob(string JobName)
  191. {
  192. JobKey jk = new JobKey(JobName);
  193. sched.ResumeJob(jk);
  194. }
  195.  
  196. /// <summary>
  197. /// 删除Job
  198. /// </summary>
  199. /// <param name="JobName"></param>
  200. public static void DeleteJob(string JobName)
  201. {
  202. JobKey jk = new JobKey(JobName);
  203. sched.DeleteJob(jk);
  204. }
  205.  
  206. /// <summary>
  207. /// 卸载定时器
  208. /// </summary>
  209. /// <param name="waitForJobsToComplete">是否等待job执行完成</param>
  210. public static void Shutdown(bool waitForJobsToComplete)
  211. {
  212. sched.Shutdown(waitForJobsToComplete);
  213. }
  214. }

Quartz 调用的更多相关文章

  1. Quartz调用大全

    Quartz调用大全 1.Quartz应用范围广泛,可单独执行也可在spring中嵌入执行. 类似的定时任务在linux下可以用crontab执行 2.实现代码: QuartzTest :主要执行类 ...

  2. spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

    在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...

  3. Quartz的任务的临时启动和暂停和恢复

    Quartz的任务的临时启动和暂停和恢复 在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类.由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可. p ...

  4. iPhone之Quartz 2D系列--编程指南(1)概览

    以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018 iPhone之Quartz ...

  5. Quartz 2D 概述

    Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制.透明度.描影.绘制阴影.透明层.颜色管理.反锯齿 ...

  6. 10 -- 深入使用Spring -- 5...1 使用Quartz

    10.5.1 使用Quartz JDK为简单的任务调度提供了Timer支持. Quartz是一个任务调度框架.借助于Cron表达式,Quartz可以支持各种复杂的任务调度. 1.下载和安装Quartz ...

  7. Quartz 2D编程指南(1) - 概览

    Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料,供大家参考 Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quar ...

  8. 企业级任务调度框架Quartz(3) 一个简单的Quartz 例子

    1. 一个简单的Quartz 工程     本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些.当 ...

  9. Spring Quartz定时任务如何获得ServletContext对象?

    servlet中可以得到ServletContext quartz调用servlet中的方法 完美解决了

随机推荐

  1. 吴裕雄--天生自然ORACLE数据库学习笔记:SQL语言基础

    select empno,ename,sal from scott.emp; SELECT empno,ename,sal FROM scott.emp; selECT empno,ename,sal ...

  2. eclipse 快速隐藏所有方法的代码块

    java开发中往往一个class文件中会有很多方法,一个方法的实现代码有时候特别长 我个人就喜欢把无关的方法代码全部隐藏起来,只打开当前需要编辑的代码就行了(不喜欢看导航视图,容易头晕) Ctrl+s ...

  3. HTML table表头排序箭头绘制法【不用箭头图片】

    效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="ut ...

  4. 微信小程序引用外部js,引用外部样式,引用公共页面模板

    https://blog.csdn.net/smartsmile2012/article/details/83414642 ================小程序引用外部js============= ...

  5. onContextItemSelected 与 onMenuItemSelected 的那些事

    Android 的activity中onCreateOptionsMenu onMenuItemSelected onOptionsItemSelected onCreateContextMenu o ...

  6. wikipedia

    1. 维基百科 2. 更多维基项目 3. 有关维基百科的电影列表 4. 维基软件 5. 维基百科相关列表 6. 其他知识分享列表 7. 补充:维基百科使用中好用的关键字 1. 维基百科 https:/ ...

  7. springboot,vue,shiro整合 关于登录认证功能

    首先是session问题 传统session认证 http协议是一种无状态协议,即浏览器发送请求到服务器,服务器是不知道这个请求是哪个用户发来的.为了让服务器知道请求是哪个用户发来的,需要让用户提供用 ...

  8. 为什么直接ping知乎的ip不能访问知乎的网站,而百度就可以?

    结论: 简单的说,就是baidu有钱. 正文: 大型网站依靠自身稀稀落落的服务器很难满足网页"秒开"的用户需求,会加入CDN加速的队伍. 当用户访问 http://www.zhih ...

  9. vue iviem UI grid布局

    Grid 栅格 概述 我们采用了24栅格系统,将区域进行24等分,这样可以轻松应对大部分布局问题.使用栅格系统进行网页布局,可以使页面排版美观.舒适. 我们定义了两个概念,行row和列col,具体使用 ...

  10. C# 中[DllImport("user32.dll")]和extern用法和示例----转载

    原文:https://blog.csdn.net/michellehsiao/article/details/7629746         extern 修饰符用于声明在外部实现的方法.extern ...