基于Quartz.Net框架封装任务调度类2
来源:互联网 发布:chart.js的tip提示 编辑:程序博客网 时间:2024/04/30 22:32
- 新建项目后,需要在Nuget下载Quartz.Net包
using Quartz;using Quartz.Impl;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ScheduleDemo{ public class QuartzManager { private static ISchedulerFactory scheduleFactory = new StdSchedulerFactory(); /// <summary> /// 添加定时任务 /// </summary> /// <typeparam name="T">Job类型</typeparam> /// <param name="jobName"></param> /// <param name="jobGroup"></param> /// <param name="dataMap"></param> /// <param name="timeExp">Cron时间表达式</param> /// <returns></returns> public static bool AddJob<T>(string jobName, string jobGroup, JobDataMap dataMap, string timeExp) where T : IJob { try { IScheduler schedule = scheduleFactory.GetScheduler(); //新建JobDetail IJobDetail jobDetail = JobBuilder.Create<T>().WithIdentity(jobName, jobGroup).SetJobData(dataMap).Build(); //新建trigger ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(jobName, jobGroup) .WithCronSchedule(timeExp) .Build(); schedule.ScheduleJob(jobDetail, trigger); return true; } catch (Exception ex) { //log:添加任务失败+jobName:jobName+jobGroup:jobGroup+ex.message return false; } } /// <summary> /// 添加Job /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jobName"></param> /// <param name="jobGroup"></param> /// <param name="dataMap"></param> /// <param name="triggerName"></param> /// <param name="triggerGroup"></param> /// <param name="timeExp"></param> /// <returns></returns> public static bool AddJob<T>(string jobName, string jobGroup, JobDataMap dataMap, string triggerName, string triggerGroup, string timeExp) where T : IJob { try { IScheduler schedule = scheduleFactory.GetScheduler(); IJobDetail jobDetail = JobBuilder.Create<T>().WithIdentity(jobName, jobGroup).SetJobData(dataMap).Build(); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(triggerName, triggerGroup) .WithCronSchedule(timeExp) .Build(); schedule.ScheduleJob(jobDetail, trigger); return true; } catch (Exception ex) { //log:添加任务失败+jobName:jobName+jobGroup:jobGroup+ex.message return false; } } /// <summary> /// 修改Job时间 /// </summary> /// <param name="triggerName"></param> /// <param name="triggerGroup"></param> /// <param name="timeExp"></param> /// <returns></returns> public static bool ModifyJobTime(string triggerName, string triggerGroup, string timeExp) { try { IScheduler schedule = scheduleFactory.GetScheduler(); ICronTrigger trigger = (ICronTrigger)schedule.GetTrigger(new TriggerKey(triggerName, triggerGroup)); if (trigger == null) { //log:未找到触发器triggerName:triggerName+triggerGroup:triggerGroup return false; } string oldCron = trigger.CronExpressionString; string newCron = timeExp; if (oldCron != newCron) { schedule.PauseTrigger(new TriggerKey(triggerName, triggerGroup)); trigger.CronExpressionString = newCron; schedule.RescheduleJob(new TriggerKey(triggerName, triggerGroup), trigger); // schedule.ResumeTrigger(new TriggerKey(triggerName, triggerGroup)); } return true; } catch (Exception ex) { //log:修改任务失败+triggerName:triggerName+triggerGroup:triggerGroup+ex.message return false; } } /// <summary> /// 修改Job内容 /// </summary> /// <param name="jobName"></param> /// <param name="jobGroup"></param> /// <param name="triggerName"></param> /// <param name="triggerGroup"></param> /// <param name="dataMap"></param> /// <returns></returns> public static bool ModifyJobDataMap(string jobName, string jobGroup, string triggerName, string triggerGroup, JobDataMap dataMap) { try { #region IScheduler schedule = scheduleFactory.GetScheduler(); ICronTrigger trigger = (ICronTrigger)schedule.GetTrigger(new TriggerKey(triggerName, triggerGroup)); if (trigger == null) { //log:未找到triggerName:triggerName+triggerGroup:triggerGroup return false; } string Cron = trigger.CronExpressionString; DeleteJob(jobName, jobGroup, triggerName, triggerGroup); AddJob<Job.ForJob>(jobName, jobGroup, dataMap, triggerName, triggerGroup, Cron); #endregion return true; } catch (Exception ex) { //log:修改任务内容失败triggerName:triggerName+triggerGroup:triggerGroup+ex.message return false; } } /// <summary> /// 删除任务 /// </summary> /// <param name="jobName"></param> /// <param name="jobGroup"></param> /// <returns></returns> public static bool DeleteJob(string jobName, string jobGroup) { try { IScheduler schedule = scheduleFactory.GetScheduler(); schedule.PauseTrigger(new TriggerKey(jobName, jobGroup)); //停止触发器 schedule.UnscheduleJob(new TriggerKey(jobName, jobGroup)); //删除触发器 schedule.DeleteJob(new JobKey(jobName, jobGroup)); //删除任务 return true; } catch (Exception ex) { //log:删除任务失败+triggerName:triggerName+triggerGroup:triggerGroup+ex.message return false; } } /// <summary> /// 删除任务 /// </summary> /// <param name="jobName"></param> /// <param name="jobGroup"></param> /// <param name="triggerName"></param> /// <param name="triggerGroup"></param> /// <returns></returns> public static bool DeleteJob(string jobName, string jobGroup, string triggerName, string triggerGroup) { try { IScheduler schedule = scheduleFactory.GetScheduler(); schedule.PauseTrigger(new TriggerKey(triggerName, triggerGroup)); //停止触发器 schedule.UnscheduleJob(new TriggerKey(triggerName, triggerGroup)); //删除触发器 schedule.DeleteJob(new JobKey(jobName, jobGroup)); //删除任务 return true; } catch (Exception ex) { //log:删除任务失败+triggerName:triggerName+triggerGroup:triggerGroup+ex.message return false; } } /// <summary> /// 启动所有任务 /// </summary> /// <returns></returns> public static bool StartAllJob() { try { IScheduler schedule = scheduleFactory.GetScheduler(); schedule.Start(); return true; } catch (Exception ex) { //log:启动任务失败+ex.message return false; } } /// <summary> /// 关闭所有任务 /// </summary> /// <returns></returns> public static bool ShutDownJobs() { try { IScheduler schedule = scheduleFactory.GetScheduler(); if (!schedule.IsShutdown) { schedule.Shutdown(); } return true; } catch (Exception ex) { //log:关闭任务失败+ex.message return false; } } }}
0 0
- 基于Quartz.Net框架封装任务调度类2
- 基于Quartz.Net框架封装任务调度类
- Quartz.NET 任务调度框架
- 任务调度框架 Quartz.NET
- Quartz.NET 任务调度框架
- Quartz.NET 任务调度框架 - 01
- 任务调度 Quartz框架
- 任务调度框架Quartz
- Quartz任务调度框架
- 任务调度框架Quartz
- 任务调度框架Quartz
- Quartz------任务调度框架
- Quartz.net基于数据库的任务调度管理(Only.Jobs)
- Spring任务调度-基于Quartz
- Java任务调度框架Quartz
- spring 任务调度框架Quartz
- Java任务调度框架Quartz
- Java任务调度框架Quartz
- inactive_list_is_low
- POJ-2260 Error Correction 模拟
- windows安装gfrtran+codeblocks
- 第一章 欢迎来到Python世界
- shrink_zone_memcg
- 基于Quartz.Net框架封装任务调度类2
- UVA 12661 Funny Car Racing(最短路)
- 计算几何模板一(点、线段、直线)
- mysql数据库优化
- Linux配置静态IP,以及解决配置静态IP后无法上网的问题
- images2gif——用python将图片列表转换成GIF动图
- 蓝桥 大臣的旅费
- python调用ECMWF欧洲中心api下载数据
- 第二章 快速入门