讲解

在线Cron表达式

调用(DLL下载)

 static void Main(string[] args)
{
//1、任务调度调用 //开启任务,操作数据,然后将数据广播给指定用户
//Cron表达式 :秒 分钟 小时 日的日 月 某一天的周 年
//每分钟执行
//string CronTime = "0/5 * * * * ? ";//每隔5秒钟执行
string CronTime = "1 * * * * ? * ";//每隔一分钟执行一次
//附带参数
string jobCode = "SysJob";
string jobCode2 = "SpeackJob";
JobDataMap map = new JobDataMap { };
DateTimeOffset time = QuartzUtil.AddJob<SysJob>(jobCode, CronTime, map);//定时任务一
DateTimeOffset time2 = QuartzUtil.AddJob<SpeackJob>(jobCode2, CronTime, map);//定时任务二
Console.ReadKey(); }
 public class SysJob : IJob
{
/// <summary>
/// 执行函数
/// </summary>
/// <param name="context"></param>
public void Execute(IJobExecutionContext context)
{
try
{
JobKey jobkey = context.JobDetail.Key;
Console.WriteLine($"{jobkey.Name}时间{DateTime.Now}"); }
catch (System.Exception e)
{ }
}
}
 class SpeackJob : IJob
{
public void Execute(IJobExecutionContext context)
{
JobKey jobkey = context.JobDetail.Key;
Console.WriteLine($"{jobkey.Name}时间{DateTime.Now}");
}
}

定时任务帮助类QuartzUtil

 /// <summary>
/// Quartz任务管理类
/// </summary>
public static class QuartzUtil
{
private static ISchedulerFactory sf = null;
private static IScheduler sched = null; static QuartzUtil()
{
sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
sched.Start();
} /// <summary>
/// 添加Job 并且以定点的形式运行 不带参数的cron表达式新建job
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="CronTime"></param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string JobName, string CronTime) where T : IJob
{
return AddJob<T>(JobName, CronTime, null);
} /// <summary>
/// 添加Job 并且以定点的形式运行 参数为Cron表达式,可传参数。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jobName">keyName</param>
/// <param name="cronTime">Cron表达式</param>
/// <param name="jobDataMap">传递的参数</param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string jobName, string cronTime, JobDataMap jobDataMap) where T : IJob
{
IJobDetail jobCheck = JobBuilder.Create<T>().WithIdentity(jobName, jobName + "_Group").SetJobData(jobDataMap).Build();//.UsingJobData("connIds", connIds).Build();
ICronTrigger cronTrigger = new CronTriggerImpl(jobName + "_CronTrigger", jobName + "_TriggerGroup", cronTime); if (sched.CheckExists(new JobKey(jobName, jobName + "_Group")))
{
sched.ResumeJob(new JobKey(jobName, jobName + "_Group"));
}
else
{
return sched.ScheduleJob(jobCheck, cronTrigger);
}
return new DateTimeOffset(DateTime.Now);
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="SimpleTime">毫秒数</param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string JobName, int SimpleTime) where T : IJob
{
return AddJob<T>(JobName, DateTime.UtcNow.AddMilliseconds(), TimeSpan.FromMilliseconds(SimpleTime));
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="SimpleTime">毫秒数</param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, int SimpleTime) where T : IJob
{
return AddJob<T>(JobName, StartTime, TimeSpan.FromMilliseconds(SimpleTime));
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="SimpleTime"></param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, TimeSpan SimpleTime) where T : IJob
{
return AddJob<T>(JobName, StartTime, SimpleTime, new Dictionary<string, object>());
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName"></param>
/// <param name="StartTime"></param>
/// <param name="SimpleTime">毫秒数</param>
/// <param name="jobDataMap"></param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, int SimpleTime, string MapKey, object MapValue) where T : IJob
{
Dictionary<string, object> map = new Dictionary<string, object>();
map.Add(MapKey, MapValue);
return AddJob<T>(JobName, StartTime, TimeSpan.FromMilliseconds(SimpleTime), map);
} /// <summary>
/// 添加Job 并且以周期的形式运行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JobName">JobKey</param>
/// <param name="StartTime">开始时间</param>
/// <param name="SimpleTime">时间差</param>
/// <param name="jobDataMap">传递的参数</param>
/// <returns></returns>
public static DateTimeOffset AddJob<T>(string JobName, DateTimeOffset StartTime, 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,
null,
SimpleTriggerImpl.RepeatIndefinitely,
SimpleTime);
return 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
/// </summary>
public static void PauseAll()
{
sched.PauseAll();
} /// <summary>
/// 恢复所有Job
/// </summary>
public static void ResumeAll()
{
sched.ResumeAll();
} /// <summary>
/// 暂停某个任务
/// </summary>
/// <param name="JobName"></param>
public static void PauseJob(string JobName)
{
JobKey jk = new JobKey(JobName);
sched.PauseJob(jk);
} /// <summary>
/// 恢复指定的Job
/// </summary>
/// <param name="JobKey"></param>
public static void ResumeJob(string JobName)
{
JobKey jk = new JobKey(JobName);
sched.ResumeJob(jk);
} /// <summary>
/// 删除Job
/// </summary>
/// <param name="JobName"></param>
public static void DeleteJob(string JobName)
{
JobKey jk = new JobKey(JobName);
sched.DeleteJob(jk);
} /// <summary>
/// 卸载定时器
/// </summary>
/// <param name="waitForJobsToComplete">是否等待job执行完成</param>
public static void Shutdown(bool waitForJobsToComplete)
{
sched.Shutdown(waitForJobsToComplete);
}
}

Quartz 调用的更多相关文章

  1. Quartz调用大全

    Quartz调用大全 1.Quartz应用范围广泛,可单独执行也可在spring中嵌入执行. 类似的定时任务在linux下可以用crontab执行 2.实现代码: QuartzTest :主要执行类 ...

  2. spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法

    在quartz中配置了一个方法运行时会连续调用两次,是因为加载两次,只需在tomcat的server.xml中修改配置 <Host name="www.xx.cn" appB ...

  3. Quartz的任务的临时启动和暂停和恢复

    Quartz的任务的临时启动和暂停和恢复 在项目中需要手动启停某些服务,那么需要有一个控制这些任务的类.由于任务是有Quartz控制的,我们只需要通过Quartz的相关的API实现相关的功能即可. p ...

  4. iPhone之Quartz 2D系列--编程指南(1)概览

    以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018 iPhone之Quartz ...

  5. Quartz 2D 概述

    Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制.透明度.描影.绘制阴影.透明层.颜色管理.反锯齿 ...

  6. 10 -- 深入使用Spring -- 5...1 使用Quartz

    10.5.1 使用Quartz JDK为简单的任务调度提供了Timer支持. Quartz是一个任务调度框架.借助于Cron表达式,Quartz可以支持各种复杂的任务调度. 1.下载和安装Quartz ...

  7. Quartz 2D编程指南(1) - 概览

    Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料,供大家参考 Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quar ...

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

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

  9. Spring Quartz定时任务如何获得ServletContext对象?

    servlet中可以得到ServletContext quartz调用servlet中的方法 完美解决了

随机推荐

  1. PAT A1091 Acute Stroke

    对于坐标平面的bfs模板题~ #include<bits/stdc++.h> using namespace std; ; ][][]={false}; ][][]; int n,m,l, ...

  2. 常用FTP命令汇总

    FTP是File Transport Protocol的简称,其作用是使连接到服务器上的客户可以在服务器和客户机间传输文件.除WWW服务外,FTP也算是使用最广泛的一种服务了.在cmd中ftp命令很多 ...

  3. spring boot 中的配置文件可以存放的位置

  4. Spring学习(四)

    Spring Ioc容器 1.具有依赖注入功能的容器.负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖.在Spring中BeanFactory是Ioc容器的实际代表者.BeanFactor ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定小文本

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  6. CentOS 7 搭建Cobbler实现自动化安装系统

    1.安装软件包 # yum -y install epel-release     #安装EPEL源 # yum -y install cobbler dhcp pykickstart 2.启动cob ...

  7. android原始sqlite中query的复杂用法

    android直接执行sql是execSQL(String sql). 这个方法可以执行任意sql语句.但是改变这个不够灵活. query这个方法可以很好的解决这个问题. 执行query查询指定的数据 ...

  8. springmvc面试问题

    1.讲下SpringMvc和Struts1,Struts2的比较的优势 性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差不多,比St ...

  9. CPD

    CPD,Cost per day的缩写,意思是按天收费,是一种广告合作方式.在实际的广告合作中根据行业不同还包括Cost per Download的缩写含义,意思是依据实际下载量收费.

  10. Write-up-Toppo

    关于 下载地址:点我 哔哩哔哩:哔哩哔哩 信息收集 vmnet8网卡,IP:192.168.131.144,开放web,ssh服务 ➜ ~ ip a show dev vmnet8 5: vmnet8 ...