using Quartz.Impl;
using Quartz.Impl.Triggers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Quartz
{
public class QuartzUtil
{
private static ISchedulerFactory sf = null;
private static IScheduler sched = null; static QuartzUtil()
{
sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
sched.Start();
} public static void Init()
{ } /// <summary>
/// 添加Job 并且以定点的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="CronTime"></param>
/// <param name="jobDataMap"></param>
/// <returns></returns>
public static void AddJob<T>(string JobName, string CronTime, Dictionary<string, object> map) where T : IJob
{
IJobDetail jobCheck = JobBuilder.Create<T>().WithIdentity(JobName, JobName + "_Group").Build();
if (map != null)
{
jobCheck.JobDataMap.PutAll(map);
}
ICronTrigger CronTrigger = new CronTriggerImpl(JobName + "_CronTrigger", JobName + "_TriggerGroup", CronTime);
sched.ScheduleJob(jobCheck, CronTrigger);
} /// <summary>
/// 添加Job 并且以定点的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="CronTime"></param>
/// <returns></returns>
public static void AddJob<T>(string JobName, string CronTime) where T : IJob
{
AddJob<T>(JobName, CronTime, null);
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="StartTime"></param>
/// <param name="EndTime"></param>
/// <param name="SimpleTime">毫秒数</param>
/// <returns></returns>
public static void AddJob<T>(string JobName, DateTimeOffset StartTime, DateTimeOffset EndTime, int SimpleTime) where T : IJob
{
AddJob<T>(JobName, StartTime, EndTime, TimeSpan.FromMilliseconds(SimpleTime));
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="StartTime"></param>
/// <param name="EndTime"></param>
/// <param name="SimpleTime"></param>
/// <returns></returns>
public static void AddJob<T>(string JobName, DateTimeOffset StartTime, DateTimeOffset EndTime, TimeSpan SimpleTime) where T : IJob
{
AddJob<T>(JobName, StartTime, EndTime, SimpleTime, new Dictionary<string, object>());
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="StartTime"></param>
/// <param name="EndTime"></param>
/// <param name="SimpleTime">毫秒数</param>
/// <param name="jobDataMap"></param>
/// <returns></returns>
public static void AddJob<T>(string JobName, DateTimeOffset StartTime, DateTimeOffset EndTime, int SimpleTime, string MapKey, object MapValue) where T : IJob
{
Dictionary<string, object> map = new Dictionary<string, object>();
map.Add(MapKey, MapValue);
AddJob<T>(JobName, StartTime, EndTime, TimeSpan.FromMilliseconds(SimpleTime), map);
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="StartTime"></param>
/// <param name="EndTime"></param>
/// <param name="SimpleTime"></param>
/// <param name="jobDataMap"></param>
/// <returns></returns>
public static void AddJob<T>(string JobName, DateTimeOffset StartTime, DateTimeOffset EndTime, 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,
EndTime,
SimpleTriggerImpl.RepeatIndefinitely,
SimpleTime);
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
/// 暂停功能Quartz提供有很多,以后可扩充
/// </summary>
public static void PauseAll()
{
sched.PauseAll();
} /// <summary>
/// 恢复所有Job
/// 恢复功能Quartz提供有很多,以后可扩充
/// </summary>
public static void ResumeAll()
{
sched.ResumeAll();
} /// <summary>
/// 删除Job
/// 删除功能Quartz提供有很多,以后可扩充
/// </summary>
/// <param name="JobName"></param>
public static void DeleteJob(string JobName)
{
JobKey jk = new JobKey(JobName, JobName + "_Group");
sched.DeleteJob(jk);
} /// <summary>
/// 卸载定时器
/// </summary>
/// <param name="waitForJobsToComplete">是否等待job执行完成</param>
public static void Shutdown(bool waitForJobsToComplete)
{
if (sched != null)
{
sched.Shutdown(waitForJobsToComplete);
}
} /// <summary>
/// 判断任务是否已经建立
/// </summary>
/// <param name="jobName">任务名</param>
public static bool CheckExist(string jobName)
{
bool isExists = false; TriggerKey triggerKey = new TriggerKey(jobName + "_CronTrigger", jobName + "_TriggerGroup");
isExists = sched.CheckExists(triggerKey); return isExists;
} /// <summary>
/// 判断简单任务是否已经建立
/// </summary>
/// <param name="jobName">任务名</param>
public static bool CheckSimpleExist(string jobName)
{
bool isExists = false; TriggerKey triggerKey = new TriggerKey(jobName + "_SimpleTrigger", jobName + "_TriggerGroup");
isExists = sched.CheckExists(triggerKey); return isExists;
}
}
}

调用方式-----------

QuartzUtil.AddJob<TimerJob>("job1", "0,14,19,37 * * * * ?");

这样就可以了

表达式网站:JSON在线编辑器-奇Q工具网 (qqe2.com)

最新文章

  1. csharp: .NET Object Relationional Mapper (ORM)- SubSonic
  2. 在VBA中新建工作簿
  3. [爬虫学习笔记]Url过滤模块UrlFilter
  4. SQL 报错信息整理及解决方案(持续更新)
  5. PostgreSQL Hardware Performance Tuning
  6. IOS把文件保存进沙盒目录
  7. (转)Redis 集群方案
  8. Vue学习之路---No.6(分享心得,欢迎批评指正)
  9. 【Tools】ubuntu16.04升级Python2.7到3.5
  10. Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信
  11. React 简介及其基本使用
  12. bll
  13. ubuntu cli
  14. Policy Gradient
  15. Android5.x新特性之 Toolbar和Theme的使用
  16. 非ROOT用户不能识别声卡问题
  17. Google的创新九原则(转)
  18. IDEA中配置SpringMVC框架 第一个演示【转】
  19. 将本地已经存在的非git项目提交到github上的空仓库
  20. C#操作Redis List 列表

热门文章

  1. day12-Servlet02
  2. 通过jmeter,将数据库数据查询出来并打印
  3. python列表、元祖
  4. K8s集群环境搭建
  5. 【Java并发004】原理层面:synchronized关键字全解析
  6. MIT6.828 Lab 1: C, Assembly, Tools, and Bootstrapping
  7. Linux—软件管理
  8. jQuery使用 前端框架Bootstrap
  9. CCS选择器 选择器优先级 选择器常见属性
  10. python 之 random.sample() 报ValueError: Sample larger than population or is negative