昨天使用Quartz.NET做了个定时任务的功能,并实现了多个定时任务的功能

下面这个类实现了如下功能:

1、对定时任务进行管理

2、创建定时任务,需要给定时任务一个job的名称

3、判断给定的job的任务是否已存在

4、停止定时任务的功能

namespace MyUKD.Quartz
{
/// <summary>
/// QuartzSchedule管理
/// </summary>
public class QuartzSchedulerMgr
{
private static ISchedulerFactory schedulerFactory;
private static IScheduler scheduler; static QuartzSchedulerMgr()
{
schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();
scheduler.Start();
} /// <summary>
/// 获取Scheduler
/// </summary>
/// <returns></returns>
public static IScheduler GetScheduler()
{
return scheduler;
} /// <summary>
/// 创建一个任务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jobName"></param>
/// <param name="intervalInSeconds"></param>
/// <param name="repeatCount"></param>
/// <returns></returns>
public static DateTimeOffset CreateJob<T>(string jobName, int intervalInSeconds, int repeatCount) where T : IJob
{ IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobName, $"{jobName}-JobGroup").Build(); ITrigger trigger = TriggerBuilder.Create().WithIdentity(jobName, $"{jobName}-TriggerGroup").StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(intervalInSeconds).WithRepeatCount(repeatCount))
.Build(); return scheduler.ScheduleJob(job, trigger);
} /// <summary>
/// 创建一个任务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jobName"></param>
/// <param name="intervalInSeconds"></param>
/// <param name="repeatCount"></param>
/// <param name="dataMap"></param>
/// <returns></returns>
public static DateTimeOffset CreateJob<T>(string jobName, int intervalInSeconds, int repeatCount,
JobDataMap dataMap) where T : IJob
{ IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobName, $"{jobName}-JobGroup").UsingJobData(dataMap)
.Build(); ITrigger trigger = TriggerBuilder.Create().WithIdentity(jobName, $"{jobName}-TriggerGroup").StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(intervalInSeconds).WithRepeatCount(repeatCount))
.Build(); return scheduler.ScheduleJob(job, trigger);
} /// <summary>
/// 创建一个任务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jobName"></param>
/// <param name="cronTime"></param>
/// <param name="dataMap"></param>
/// <returns></returns>
public static DateTimeOffset CreateJob<T>(string jobName, string cronTime, JobDataMap dataMap) where T : IJob
{ IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobName, $"{jobName}-JobGroup").UsingJobData(dataMap)
.Build(); ICronTrigger trigger = new CronTriggerImpl(jobName, $"{jobName}-TriggerGroup", cronTime); return scheduler.ScheduleJob(job, trigger);
} /// <summary>
/// 停止执行的job,并删除此job
/// </summary>
/// <param name="jobName"></param>
/// <returns></returns>
public static bool UnscheduleJob(string jobName)
{
JobKey existKey = JobKey.Create(jobName, $"{jobName}-JobGroup");
TriggerKey exisTriggerKey = new TriggerKey(jobName, $"{jobName}-TriggerGroup"); scheduler.PauseJob(existKey);
return scheduler.UnscheduleJob(exisTriggerKey) && scheduler.DeleteJob(existKey); } /// <summary>
/// 是否存在相关名称的Job
/// </summary>
/// <param name="jobName"></param>
/// <returns></returns>
public static bool ExistJob(string jobName)
{
JobKey key = JobKey.Create(jobName, $"{jobName}-JobGroup");
return scheduler.CheckExists(key);
} }
}

Quartz.NET的简单任务管理类的更多相关文章

  1. Quartz.net 的开源任务管理平台

    Quartz.net 的开源任务管理平台 前面总结了很多,关于Quartz.net 的文章,介绍了如何使用Quartz.net.不清楚的朋友,可以看我之前的系列文章,http://www.cnblog ...

  2. 企业级任务调度框架Quartz(3) 一个简单的Quartz 例子

    1. 一个简单的Quartz 工程     本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些.当 ...

  3. 基于Android 下载文件时,更新UI简单帮助类

    因为在项目开发时.有这种简单需求,问谷歌,网络上也有好多Utils工具类,可是比較冗余.自己就简单的写了一个简单帮助类. /** * 下载文件,更新UI简单帮助类 * * @author jarlen ...

  4. Java基础_0305:简单Java类

    简单Java类 简单Java类是一种在实际开发之中使用最多的类的定义形式,在简单Java类中包含有类.对象.构造方法.private封装等核心概念的使用,而对于简单Java类首先给出如下的基本开发要求 ...

  5. Golang简单日志类

    实现简单的日志写入文件功能运行环境:golang1.4.2+win7x64golang1.4.2+centos6.5×64 package Helper import ( “fmt” “log” “o ...

  6. 玩转TypeScript(1) --定义简单的类

    相对于JavaScript来说,TypeScript增强了强制类型,同时添加了一系列的面向对象的特性,包含:静态类型(Static typing).类(Classes).接口(Interfaces). ...

  7. JAVA基础学习之路(四)定义简单java类

    简单java类开发一般原则: 类名称必须有意义,再怎么说,要让人家看的明白吧 类之中所有属性必须使用private封装,并提供setter,getter方法 类之中可以有多个构造方法,但是必须保留有一 ...

  8. java基础之JDBC三:简单工具类的提取及应用

    简单工具类: public class JDBCSimpleUtils { /** * 私有构造方法 */ private JDBCSimpleUtils() { } /** * 驱动 */ publ ...

  9. C++_类继承1-从一个简单的类开始

    面向对象编程的主要目的之一是:提供可重用的代码.尤其是项目很庞大的时候,重用测试过的代码比重新编码代码要好得多. C++提供了更高层次的重用性.其中之一就是继承这个概念. 一些厂商提供了类库.类库由类 ...

随机推荐

  1. 6M - 循环多少次?

    我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算,如果代码中出现 fori=1; ...

  2. 网络编程初识和socket套接字

    网络的产生 不同机器上的程序要通信,才产生了网络:凡是涉及到倆个程序之间通讯的都需要用到网络 软件开发架构 软件开发架构的类型:应用类.web类 应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌 ...

  3. 基于ASP.NET的高校辅导员工作管理系统的设计与实现--论文随笔(四)

    一.基本信息 标题:基于ASP.NET的高校辅导员工作管理系统的设计与实现 时间:2017 出版源:南通理工学院 关键词:ASP.NET; SQL Server; 高校; 管理系统; 辅导员; 二.研 ...

  4. tab选项卡实例

    之前也见了不少的tab选项卡,但是下面这个选项卡是一个页面中有多个时互不影响的. <head> <meta charset="utf-8"> <met ...

  5. win7 home 提升 admin, pip

    以管理员权限运行cmd cmd   右击‘以管理员身份运行’ 输入net user administrator /active:yes 取消为 net user administrator /acti ...

  6. C# 创建Dll文件供程序调用方法

    C# 创建Dll文件供程序调用方法 使用C#创建动态Dll文件方法: 1.  在VS2017环境下,新建-项目-选择类库类型: 2. 新创建一个.cs文件(如test.cs),编写代码如下: usin ...

  7. Java集合:ArrayList的实现原理

    Java集合---ArrayList的实现原理   目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 ...

  8. Reading | 《数字图像处理原理与实践(MATLAB版)》(未完待续)

    目录 一.前言 1.MATLAB or C++ 2.图像文件 文件头 调色板 像素数据 3.RGB颜色空间 原理 坐标表示 4.MATLAB中的图像文件 图像类型 image()函数 imshow() ...

  9. Mybatis中输入输出映射和动态Sql

    一.输入映射 我们通过配置parameterType的值来指定输入参数的类型,这些类型可以是简单数据类型.POJO.HashMap等数据类型 1.简单类型 2.POJO包装类型 ①这是单表查询的时候传 ...

  10. Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解

    前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...