Quartz帮助类
#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帮助类的更多相关文章
- Quartz管理类
package com.sihuatech.project.task.manager; import java.text.ParseException; import org.quartz.CronT ...
- Quartz公共类,log4net 日志分目录 ,调度任务。
版本:Quartz 2.5 ,log4net 2.0.8 QuartzHelper namespace Job.Common { public class QuartzHelper { private ...
- [C#][Quartz]帮助类
本文来自:http://www.cnblogs.com/pengze0902/p/6128558.html /// <summary> /// 任务处理帮助类 /// </summa ...
- 定时器quartz工具类
一.gradle配置 // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz compile group: 'org.qua ...
- quartz测试类
package demo.mytest; import java.text.ParseException; import org.quartz.CronTrigger;import org.quart ...
- 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz
1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...
- Quartz:定时任务工具类
Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...
- Spring任务调度之Quartz
一.Quartz作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.Quart ...
- quartz与spring进行集成
上一篇将了quartz框架的使用,spring同样也提供了对quartz的集成.这次就尝试一下在spring中集成quartz. 要在spring中使用job,Trigger和Scheduler,就要 ...
- Quartz 入门详解
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
随机推荐
- prefetch和preload
前面的话 基于VUE的前端小站改造成SSR服务器端渲染后,HTML文档会自动使用preload和prefetch来预加载所需资源,本文将详细介绍preload和prefetch的使用 资源优先级 在介 ...
- C#where关键字约束
where关键字的用法 where关键词一个最重要的用法就是在泛型的声明.定义中做出约束. 约束又分为接口约束.基类约束.构造函数约束.函数方法的约束. 1.接口约束,泛型参数必须实现相应的接口才可以 ...
- linux如何修改dns
#修改dns: [root@iZap201hv2fcgry1alvbznZ ~]# vim /etc/resolv.conf #添加此格式的dns nameserver 114.114.114.114 ...
- Redis的攻击手法
目录 Redis概述 Redis未授权 漏洞发现 漏洞验证 Redis写shell 漏洞利用 Redis写公钥 漏洞利用 主从复制RCE 漏洞简介: 漏洞利用 计划任务反弹shell 漏洞利用 Red ...
- 基于实战的Burp Suite插件使用Tips
基于实战的Burp Suite插件使用技巧 本篇文章首发于奇安信攻防社区 目录 基于实战的Burp Suite插件使用技巧 免责声明: 0×00前言 0×01专业版激活 0×02插件的环境安装 0×0 ...
- 安装kali linux(干货)
安装kali 一. 准备工具 1. VMware Workstation Pro https://www.vmware.com/cn/products/workstation-pro/workstat ...
- 北极星Polaris+Gateway动态网关配置!
springcloudtencetn 父工程: pom <?xml version="1.0" encoding="UTF-8"?> <pro ...
- Blazor和Vue对比学习(进阶.路由导航一):基本使用
Blazor和Vue都是单文件组件SPA,路由的实现逻辑非常相似,页面路径的改变都是组件的切换,但因为各自语言的特性,在实现方式上有较大差异. 一.安装 1.Vue:Router是Vue的一个插件.如 ...
- 【Oracle】Oracle读取RAW二进制类型并实现与十六进制的相互转换
1.十六进制转二进制 select HEXTORAW('7264B1CD0582734D8E27E0FBDA15B2A5') from dual; 2.二进制转十六进制 select AUUID_0, ...
- Nmap扫描参数
执行Nmap/nmap --help查看帮助文档,将显示Namp的用法及其功能Nmap的相关参数的含义与用法:扫描目标时用到的参数:-iL:从文件中导入目标主机或目标网段-iR:随意选择目标主机--e ...