Quartz 调用
调用(DLL下载)
- static void Main(string[] args)
- {
- //1、任务调度调用
- //开启任务,操作数据,然后将数据广播给指定用户
- //Cron表达式 :秒 分钟 小时 日的日 月 某一天的周 年
- //每分钟执行
- //string CronTime = "0/5 * * * * ? ";//每隔5秒钟执行
- string CronTime = "1 * * * * ? * ";//每隔一分钟执行一次
- //附带参数
- string jobCode = "SysJob";
- string jobCode2 = "SpeackJob";
- JobDataMap map = new JobDataMap { };
- DateTimeOffset time = QuartzUtil.AddJob<SysJob>(jobCode, CronTime, map);//定时任务一
- DateTimeOffset time2 = QuartzUtil.AddJob<SpeackJob>(jobCode2, CronTime, map);//定时任务二
- Console.ReadKey();
- }
- public class SysJob : IJob
- {
- /// <summary>
- /// 执行函数
- /// </summary>
- /// <param name="context"></param>
- public void Execute(IJobExecutionContext context)
- {
- try
- {
- JobKey jobkey = context.JobDetail.Key;
- Console.WriteLine($"{jobkey.Name}时间{DateTime.Now}");
- }
- catch (System.Exception e)
- {
- }
- }
- }
- class SpeackJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- JobKey jobkey = context.JobDetail.Key;
- Console.WriteLine($"{jobkey.Name}时间{DateTime.Now}");
- }
- }
定时任务帮助类QuartzUtil
- /// <summary>
- /// Quartz任务管理类
- /// </summary>
- public static class QuartzUtil
- {
- private static ISchedulerFactory sf = null;
- private static IScheduler sched = null;
- static QuartzUtil()
- {
- sf = new StdSchedulerFactory();
- sched = sf.GetScheduler();
- sched.Start();
- }
- /// <summary>
- /// 添加Job 并且以定点的形式运行 不带参数的cron表达式新建job
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="JobName"></param>
- /// <param name="CronTime"></param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string JobName, string CronTime) where T : IJob
- {
- return AddJob<T>(JobName, CronTime, null);
- }
- /// <summary>
- /// 添加Job 并且以定点的形式运行 参数为Cron表达式,可传参数。
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="jobName">keyName</param>
- /// <param name="cronTime">Cron表达式</param>
- /// <param name="jobDataMap">传递的参数</param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string jobName, string cronTime, JobDataMap jobDataMap) where T : IJob
- {
- IJobDetail jobCheck = JobBuilder.Create<T>().WithIdentity(jobName, jobName + "_Group").SetJobData(jobDataMap).Build();//.UsingJobData("connIds", connIds).Build();
- ICronTrigger cronTrigger = new CronTriggerImpl(jobName + "_CronTrigger", jobName + "_TriggerGroup", cronTime);
- if (sched.CheckExists(new JobKey(jobName, jobName + "_Group")))
- {
- sched.ResumeJob(new JobKey(jobName, jobName + "_Group"));
- }
- else
- {
- return sched.ScheduleJob(jobCheck, cronTrigger);
- }
- return new DateTimeOffset(DateTime.Now);
- }
- /// <summary>
- /// 添加Job 并且以周期的形式运行
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="JobName"></param>
- /// <param name="SimpleTime">毫秒数</param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string JobName, int SimpleTime) where T : IJob
- {
- return AddJob<T>(JobName, DateTime.UtcNow.AddMilliseconds(), TimeSpan.FromMilliseconds(SimpleTime));
- }
- /// <summary>
- /// 添加Job 并且以周期的形式运行
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="JobName"></param>
- /// <param name="SimpleTime">毫秒数</param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, int SimpleTime) where T : IJob
- {
- return AddJob<T>(JobName, StartTime, TimeSpan.FromMilliseconds(SimpleTime));
- }
- /// <summary>
- /// 添加Job 并且以周期的形式运行
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="JobName"></param>
- /// <param name="SimpleTime"></param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, TimeSpan SimpleTime) where T : IJob
- {
- return AddJob<T>(JobName, StartTime, SimpleTime, new Dictionary<string, object>());
- }
- /// <summary>
- /// 添加Job 并且以周期的形式运行
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="JobName"></param>
- /// <param name="StartTime"></param>
- /// <param name="SimpleTime">毫秒数</param>
- /// <param name="jobDataMap"></param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, int SimpleTime, string MapKey, object MapValue) where T : IJob
- {
- Dictionary<string, object> map = new Dictionary<string, object>();
- map.Add(MapKey, MapValue);
- return AddJob<T>(JobName, StartTime, TimeSpan.FromMilliseconds(SimpleTime), map);
- }
- /// <summary>
- /// 添加Job 并且以周期的形式运行
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="JobName">JobKey</param>
- /// <param name="StartTime">开始时间</param>
- /// <param name="SimpleTime">时间差</param>
- /// <param name="jobDataMap">传递的参数</param>
- /// <returns></returns>
- public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, TimeSpan SimpleTime, Dictionary<string, object> map) where T : IJob
- {
- IJobDetail jobCheck = JobBuilder.Create<T>().WithIdentity(JobName, JobName + "_Group").Build();
- jobCheck.JobDataMap.PutAll(map);
- ISimpleTrigger triggerCheck = new SimpleTriggerImpl(JobName + "_SimpleTrigger", JobName + "_TriggerGroup",
- StartTime,
- null,
- SimpleTriggerImpl.RepeatIndefinitely,
- SimpleTime);
- return sched.ScheduleJob(jobCheck, triggerCheck);
- }
- /// <summary>
- /// 修改触发器时间,需要job名,以及修改结果
- /// CronTriggerImpl类型触发器
- /// </summary>
- public static void UpdateTime(string jobName, string CronTime)
- {
- TriggerKey TKey = new TriggerKey(jobName + "_CronTrigger", jobName + "_TriggerGroup");
- CronTriggerImpl cti = sched.GetTrigger(TKey) as CronTriggerImpl;
- cti.CronExpression = new CronExpression(CronTime);
- sched.RescheduleJob(TKey, cti);
- }
- /// <summary>
- /// 修改触发器时间,需要job名,以及修改结果
- /// SimpleTriggerImpl类型触发器
- /// </summary>
- /// <param name="jobName"></param>
- /// <param name="SimpleTime">分钟数</param>
- public static void UpdateTime(string jobName, int SimpleTime)
- {
- UpdateTime(jobName, TimeSpan.FromMinutes(SimpleTime));
- }
- /// <summary>
- /// 修改触发器时间,需要job名,以及修改结果
- /// SimpleTriggerImpl类型触发器
- /// </summary>
- public static void UpdateTime(string jobName, TimeSpan SimpleTime)
- {
- TriggerKey TKey = new TriggerKey(jobName + "_SimpleTrigger", jobName + "_TriggerGroup");
- SimpleTriggerImpl sti = sched.GetTrigger(TKey) as SimpleTriggerImpl;
- sti.RepeatInterval = SimpleTime;
- sched.RescheduleJob(TKey, sti);
- }
- /// <summary>
- /// 暂停所有Job
- /// </summary>
- public static void PauseAll()
- {
- sched.PauseAll();
- }
- /// <summary>
- /// 恢复所有Job
- /// </summary>
- public static void ResumeAll()
- {
- sched.ResumeAll();
- }
- /// <summary>
- /// 暂停某个任务
- /// </summary>
- /// <param name="JobName"></param>
- public static void PauseJob(string JobName)
- {
- JobKey jk = new JobKey(JobName);
- sched.PauseJob(jk);
- }
- /// <summary>
- /// 恢复指定的Job
- /// </summary>
- /// <param name="JobKey"></param>
- public static void ResumeJob(string JobName)
- {
- JobKey jk = new JobKey(JobName);
- sched.ResumeJob(jk);
- }
- /// <summary>
- /// 删除Job
- /// </summary>
- /// <param name="JobName"></param>
- public static void DeleteJob(string JobName)
- {
- JobKey jk = new JobKey(JobName);
- sched.DeleteJob(jk);
- }
- /// <summary>
- /// 卸载定时器
- /// </summary>
- /// <param name="waitForJobsToComplete">是否等待job执行完成</param>
- public static void Shutdown(bool waitForJobsToComplete)
- {
- sched.Shutdown(waitForJobsToComplete);
- }
- }
Quartz 调用的更多相关文章
- Quartz调用大全
Quartz调用大全 1.Quartz应用范围广泛,可单独执行也可在spring中嵌入执行. 类似的定时任务在linux下可以用crontab执行 2.实现代码: QuartzTest :主要执行类 ...
- spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法
在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...
- Quartz的任务的临时启动和暂停和恢复
Quartz的任务的临时启动和暂停和恢复 在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类.由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可. p ...
- iPhone之Quartz 2D系列--编程指南(1)概览
以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018 iPhone之Quartz ...
- Quartz 2D 概述
Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制.透明度.描影.绘制阴影.透明层.颜色管理.反锯齿 ...
- 10 -- 深入使用Spring -- 5...1 使用Quartz
10.5.1 使用Quartz JDK为简单的任务调度提供了Timer支持. Quartz是一个任务调度框架.借助于Cron表达式,Quartz可以支持各种复杂的任务调度. 1.下载和安装Quartz ...
- Quartz 2D编程指南(1) - 概览
Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料,供大家参考 Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quar ...
- 企业级任务调度框架Quartz(3) 一个简单的Quartz 例子
1. 一个简单的Quartz 工程 本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些.当 ...
- Spring Quartz定时任务如何获得ServletContext对象?
servlet中可以得到ServletContext quartz调用servlet中的方法 完美解决了
随机推荐
- 吴裕雄--天生自然ORACLE数据库学习笔记:SQL语言基础
select empno,ename,sal from scott.emp; SELECT empno,ename,sal FROM scott.emp; selECT empno,ename,sal ...
- eclipse 快速隐藏所有方法的代码块
java开发中往往一个class文件中会有很多方法,一个方法的实现代码有时候特别长 我个人就喜欢把无关的方法代码全部隐藏起来,只打开当前需要编辑的代码就行了(不喜欢看导航视图,容易头晕) Ctrl+s ...
- HTML table表头排序箭头绘制法【不用箭头图片】
效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="ut ...
- 微信小程序引用外部js,引用外部样式,引用公共页面模板
https://blog.csdn.net/smartsmile2012/article/details/83414642 ================小程序引用外部js============= ...
- onContextItemSelected 与 onMenuItemSelected 的那些事
Android 的activity中onCreateOptionsMenu onMenuItemSelected onOptionsItemSelected onCreateContextMenu o ...
- wikipedia
1. 维基百科 2. 更多维基项目 3. 有关维基百科的电影列表 4. 维基软件 5. 维基百科相关列表 6. 其他知识分享列表 7. 补充:维基百科使用中好用的关键字 1. 维基百科 https:/ ...
- springboot,vue,shiro整合 关于登录认证功能
首先是session问题 传统session认证 http协议是一种无状态协议,即浏览器发送请求到服务器,服务器是不知道这个请求是哪个用户发来的.为了让服务器知道请求是哪个用户发来的,需要让用户提供用 ...
- 为什么直接ping知乎的ip不能访问知乎的网站,而百度就可以?
结论: 简单的说,就是baidu有钱. 正文: 大型网站依靠自身稀稀落落的服务器很难满足网页"秒开"的用户需求,会加入CDN加速的队伍. 当用户访问 http://www.zhih ...
- vue iviem UI grid布局
Grid 栅格 概述 我们采用了24栅格系统,将区域进行24等分,这样可以轻松应对大部分布局问题.使用栅格系统进行网页布局,可以使页面排版美观.舒适. 我们定义了两个概念,行row和列col,具体使用 ...
- C# 中[DllImport("user32.dll")]和extern用法和示例----转载
原文:https://blog.csdn.net/michellehsiao/article/details/7629746 extern 修饰符用于声明在外部实现的方法.extern ...