#region 帮助类
public class QuarztHelper
{
#region 字段
/// <summary>
/// 调度器
/// </summary>
IScheduler scheduler; /// <summary>
/// 工作作业
/// </summary>
IJobDetail job; /// <summary>
/// 创建触发器
/// </summary>
ITrigger trigger; /// 身份名称
/// </summary>
string jobKeyName; /// <summary>
/// 分组名称
/// </summary>
string groupName;
#endregion #region 构造函数
public QuarztHelper()
{ } #endregion #region 创建调度器,并打开任务
/// <summary>
/// 创建调度器 并打开任务
/// </summary>
/// <returns></returns>
public async Task CreateScheduler(Form x = null)
{
this.scheduler = await new StdSchedulerFactory().GetScheduler();
if (x != null) //如果没有窗体,则不储存上下文数据
{
this.scheduler.Context.Put("form1", x);
}
await this.scheduler.Start(); } #endregion #region 创建并绑定工作
/// <summary>
/// 1.创建并绑定工作
/// </summary>
/// <typeparam name="T">实现Ijob的类</typeparam>
/// <param name="name">身份key</param>
/// <param name="groupName">分组名称</param>
/// <returns></returns>
public void Definejob<T>(string name, string groupName) where T : IJob
{
//obDataMap jobDataMap = new JobDataMap();
//jobDataMap.Put("TaskName", "Task1");
// .UsingJobData(jobKeyName);储存数据 //StoreDurably 是否持久, 调用ResumeJob 重新执行 this.jobKeyName = name;
this.groupName = groupName;
this.job = JobBuilder.Create<T>()
.WithIdentity(name, groupName)//使用具有给定名称和组的 JobKey 来标识 JobDetail。
.Build();
}
#endregion #region 创建触发器
/// <summary>
/// 2.创建触发器
/// </summary>
/// <param name="triggerName">触发器名称</param>
/// <param name="groupName">分组名称</param>
/// <param name="cron">表达式</param>
/// <param name="name">jobkey名称</param>
public void CreateTigger(string triggerName, string cron)
{
// 创建触发器 触发作业立即运行,然后每秒重复一次
this.trigger = TriggerBuilder.Create()
.WithIdentity(triggerName, this.groupName)
.WithCronSchedule(cron)
.ForJob(this.jobKeyName, this.groupName)
.Build();
}
#endregion #region 关闭任务
/// <summary>
/// 关闭任务
/// </summary>
public void CloseScheduler()
{
this.scheduler.Shutdown();
}
#endregion #region 安排任务
/// <summary>
/// 安排任务
/// </summary>
/// <returns></returns>
public async Task SchedulerTask()
{
await scheduler.ScheduleJob(job, trigger);
}
#endregion #region 作业监听添加到任务调度 /// <summary>
/// 将作业监听其添加到任务调度中去
/// </summary>
/// <typeparam name="T">实现IJobListener接口</typeparam>
public void ListenJob<T>(string jobkeyName, string GroupName) where T : IJobListener, new()
{
IJobListener li = (IJobListener)Activator.CreateInstance(typeof(T), new object[] { jobKeyName });
try
{
this.scheduler.ListenerManager.AddJobListener(li, KeyMatcher<JobKey>.KeyEquals(new JobKey(jobkeyName, GroupName)));
}
catch (Exception ex)
{ throw ex;
} }
#endregion #region 作业监听暂停
/// <summary>
/// 将作业监听暂停
/// </summary>
/// <param name="jobkeyName">监听器名称</param>
/// <returns></returns>
public bool RemoveListen(string jobkeyName)
{
return this.scheduler.ListenerManager.RemoveJobListener(jobkeyName); }
#endregion #region 暂停分组下所有的工作任务 /// <summary>
/// 暂停分组下所有的工作任务
/// </summary>
public void PauseJobs(string groupName)
{
this.scheduler.PauseJobs(GroupMatcher<JobKey>.GroupEquals(groupName));
}
#endregion #region 暂停某个分组下某个任务 /// <summary>
/// 暂停某个分组下某个任务
/// </summary>
public void PauseJob(string jobKeyName, string groupName)
{
this.scheduler.PauseJob(new JobKey(jobKeyName, groupName));
}
#endregion #region 恢复分组下所有的工作任务
/// <summary>
/// 恢复分组下所有的工作任务
/// </summary>
public void ResumeJobs(string groupName)
{
this.scheduler.ResumeJobs(GroupMatcher<JobKey>.GroupEquals(groupName));
}
#endregion #region 恢复分组下某个任务 /// <summary>
/// 恢复分组下某个任务
/// </summary>
public void ResumeJob(string jobKeyName, string groupName)
{
this.scheduler.ResumeJob(new JobKey(jobKeyName, groupName));
}
#endregion #region 删除分组下所有的工作任务
/// <summary>
/// 删除分组下所有的工作任务
/// </summary>
public Task<bool> DeleteJobs(string groupName)
{
var jobKeys = scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(groupName)).Result;
return this.scheduler.DeleteJobs(jobKeys);
}
#endregion #region 删除某个分组下某个任务
/// <summary>
/// 删除某个分组下某个任务
/// </summary>
public Task<bool> DeleteJob(string jobKeyName, string groupName)
{
return this.scheduler.DeleteJob(new JobKey(jobKeyName, groupName));
} #endregion #region 添加任务
/// <summary>
/// 添加任务
/// </summary>
/// <typeparam name="T">集成Ijob接口</typeparam>
/// <param name="jobkeyName">身份(唯一值)</param>
/// <param name="groupName">分组名称</param>
/// <param name="trigger">"触发器名称"</param>
/// <param name="cron">定时表达式</param>
public async void AddJob<T>(string jobkeyName, string groupName, string trigger, string cron) where T : IJob
{ Definejob<T>(jobkeyName, groupName);
CreateTigger(trigger, cron);
await this.scheduler.AddJob(job, true, true);
await this.scheduler.ScheduleJob(this.trigger);
}
#endregion #region 查看分组下所有的任务名称
public void QueryGroupName(string groupName)
{
var groupMatcher = GroupMatcher<JobKey>.GroupEquals(groupName);
var jobKeys = scheduler.GetJobKeys(groupMatcher);
foreach (var item in jobKeys.Result)
{
Console.WriteLine(item.Name.ToString());//名称
} }
#endregion }
#endregion

Quartz帮助类的更多相关文章

  1. Quartz管理类

    package com.sihuatech.project.task.manager; import java.text.ParseException; import org.quartz.CronT ...

  2. Quartz公共类,log4net 日志分目录 ,调度任务。

    版本:Quartz 2.5 ,log4net 2.0.8 QuartzHelper namespace Job.Common { public class QuartzHelper { private ...

  3. [C#][Quartz]帮助类

    本文来自:http://www.cnblogs.com/pengze0902/p/6128558.html /// <summary> /// 任务处理帮助类 /// </summa ...

  4. 定时器quartz工具类

    一.gradle配置 // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz compile group: 'org.qua ...

  5. quartz测试类

    package demo.mytest; import java.text.ParseException; import org.quartz.CronTrigger;import org.quart ...

  6. 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz

    1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...

  7. Quartz:定时任务工具类

    Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...

  8. Spring任务调度之Quartz

    一.Quartz作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.Quart ...

  9. quartz与spring进行集成

    上一篇将了quartz框架的使用,spring同样也提供了对quartz的集成.这次就尝试一下在spring中集成quartz. 要在spring中使用job,Trigger和Scheduler,就要 ...

  10. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

随机推荐

  1. Codeforces Round #829 (Div. 2) D. Factorial Divisibility(数学)

    题目链接 题目大意: \(~~\)给定n个正整数和一个数k,问这n个数的阶乘之和能不能被k的阶乘整除 既:(a\(_{1}\)!+a\(_{2}\)!+a\(_{3}\)!+....+a\(_{n}\ ...

  2. ubuntu基本

    ubuntu使用过程中遇到的指令 apt-get更新 当现出net-tools没有可安装候选 的提示时,可能是apt-get需要更新了.通过指令sudo apt install net-tools p ...

  3. RocketMQ系列-搭建Namesrv源码调试环境

    RocketMQ系列-搭建Namesrv源码调试环境 在学习任何一个技术框架的时候,我们通常都是先了解是什么,有什么作用.解决什么问题.设计亮点和设计思想是什么:当然对于技术学习上来说,这只是纸上谈兵 ...

  4. 前端工程化与webpack的介绍

    前端工程化 概念:在企业级的前端项目开发中,把前端开发所需的工具.技术.流程.经验等进行规范化.标准化. 模块化 js的模块化,css的模块化,资源的模块化 组件化 复用现有的UI结构,样式,行为 规 ...

  5. APACHE快速安装流程梳理

    操作参考教程:https://www.cnblogs.com/haw2106/p/9839655.html 快速安装开始: [环境配置1] yum -y install gcc gcc-c++ wge ...

  6. 2.2:常用的Python数据类型、字符串、dtype

    一.内置数据类型 1.整型 2.浮点型 3.字符串 4.复数 5.布尔类型bool 6.None类型 二.字符串 1.从键盘输入数据 s = input() 2.用eval去引号求值 eval(&qu ...

  7. 【Spark】Day05-内核解析:组件、流程、部署、运行模式、通讯架构、任务调度(Stage、task级)、两种Shuffle机制、内存管理、核心组件

    一.内核概述 内核:核心组件的运行机制.任务调度.内存管理.运行原理 1.核心组件 (1)Driver驱动器节点:执行main方法,将程序转化为作业job,在executor中调度任务task,跟踪并 ...

  8. 一篇文章教你实战Docker容器数据卷

    在上一篇中,咱们对Docker中的容器数据卷做了介绍.已经知道了容器数据卷是什么?能干什么用.那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例 1:宿主机(也就是Docke ...

  9. CBV如何添加装饰器?

    目录 一:CBV如何添加装饰器 1.CBV中django不建议直接给类的方法加装饰器 2.CBC添加装饰器的三种方法 3.CBV添加装饰器实战 一:CBV如何添加装饰器 1.CBV中django不建议 ...

  10. 填坑日志-云网络智慧课堂双网卡Mac地址读取错误的问题及解决

    云网络智慧课堂的双网卡问题记录及解决方案 教师端 其实这里双网卡的问题一直没有解决,分为了两部分,一部分是教师端,一部分是学生端.症状类似,问题也类似,都是在设计之初因为硬件限制可能没有考虑到双网卡的 ...