Quartz.NET ScheduledFireTimeUtc 当超过1分钟时出现的问题。
时间:2019-09-17
本文章向大家介绍Quartz.NET ScheduledFireTimeUtc 当超过1分钟时出现的问题。,主要包括Quartz.NET ScheduledFireTimeUtc 当超过1分钟时出现的问题。使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
验证代码:
1 class Program 2 { 3 public static IScheduler scheduler = null; 4 static void Main(string[] args) 5 { 6 scheduler = StdSchedulerFactory.GetDefaultScheduler(); 7 scheduler.Start(); 8 string GroupName = "DateRules"; 9 string RunCorn = "0 " + DateTime.Now.AddMinutes(1).Minute + " * * * ?"; 10 for (int i = 0; i < 30; i++) 11 { 12 string Identity = "DataRule_" + i; 13 14 JobDataMap JobData = new JobDataMap(); 15 JobData["Index"] = i; 16 IJobDetail job = JobBuilder.Create<MyJob>() 17 .WithIdentity(Identity, GroupName) 18 .SetJobData(JobData) 19 .Build(); 20 21 ITrigger trigger = TriggerBuilder.Create() 22 .WithIdentity(Identity, Identity) 23 .WithCronSchedule(RunCorn) 24 .Build(); 25 26 scheduler.ScheduleJob(job, trigger); 27 } 28 Console.ReadLine(); 29 }
public class MyJob : IJob { public void Execute(IJobExecutionContext context) { var FireTimeAfter = context.Trigger.GetFireTimeAfter(context.ScheduledFireTimeUtc.Value.ToLocalTime()); string Index = context.JobDetail.JobDataMap["Index"].ToString(); Thread.Sleep(30000); Console.WriteLine("执行时间应为" + FireTimeAfter.Value.ToLocalTime() + "\t" + context.ScheduledFireTimeUtc.Value.ToLocalTime() + "\t" + Index); } }
quartz本身包含一个线程池,让线程池中所有线程都Sleep30秒后输出ScheduledFireTimeUtc为示例:2019-09-17 09:00:00 ,当Sleep超过1分钟再启动的Job的ScheduledFireTimeUtc变为了:2019-09-17 09:01:00
这时使用使用GetFireTimeAfter重新取得应执行时间。
原文地址:https://www.cnblogs.com/jgjgjg23/p/11531778.html
- PHP数据结构(二十三) ——快速排序
- PHP数据结构(二十四) ——堆排序
- PHP数据结构(二十五) ——并归排序
- PHP数据结构(二十六) ——基数排序实现36进制数排序
- Apache配置
- jquery事件
- 设计模式专题(二)——策略模式
- ASP.NET AJAX(10)__Authentication ServiceAuthentication ServiceAuthentication Service属性Authentication
- 高效开发 MVVM 和 databinding 你需要使用的工具
- ASP.NET AJAX(9)__Profile Service什么是ASP.NET Profile如何使用ASP.NET ProfileProfile ServiceProfile Service预
- 设计模式专题(三)——装饰模式
- ASP.NET AJAX(8)__Microsoft AJAX Library中异步通信层的使用什么是异步通信层Micorsoft AJAX Library异步通信层的组成WebRequestExec
- ASP.NET AJAX(7)_Microsoft AJAX Library扩展客户端组件继承时需要注意的问题扩展类型如何修改已有类型
- ASP.NET AJAX(6)__Microsoft AJAX Library中的面向对象类型系统命名空间类类——构造函数类——定义方法类——定义属性类——注册类类——抽象类类——继承类——调用父类方
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python 中的元类详解
- 我扒了半天源码,终于找到了Oauth2自定义处理结果的最佳方案!
- python 解决多核处理器算力浪费的现象
- python实现单例模式的5种方法
- java序列化和序列化ID的作用
- python函数式编程
- 让Vim打造成强大的IDE,附_vimrc的配置和使用
- python 中面向切面编程AOP和装饰器
- HashMap&ConcurrentHashMap&HashTable
- python中的垃圾回收机制
- python中值传递还是引用传递?
- 基于Docker+Jenkins+Git的集成开发环境搭建
- python 函数的本质理解
- centOS(离线) off-line install docker-ce
- Java 工厂 Simple Factory&Factory&Abstract Factory