讲解

在线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. leetcode刷题-- 4. 贪心

    贪心 455分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼 ...

  2. 【原】Linux中常见服务介绍

    1.SSH介绍 简单说,SSH(Secure Shell Protocol)是一种网络协议,用于计算机之间的加密登录.在默认状态下SSH服务提供俩个服务功能,一个是提供类似telnet远程联机服务器的 ...

  3. 华为云WeLink 颠覆你对智能办公的想象

    导读 华为云发现,与企业数字化关系最紧密的就是办公数字化,所以将WeLink放到华为云上可以作为一个抓手让企业更直观地感受到云端数字化,而且华为云的合作伙伴,也可以与WeLink建立联接,从而进整个企 ...

  4. 法兰克因恶意软件感染而关闭了整个IT网络

    导读 现在,越来越多的黑客组织将目标对准大型企业和政府机构.对于黑客而言,这比感染家庭用户具有更高的潜在利益.由于勒索软件的攻击,许多市政网络已被暂时关闭,而这次法兰克福遇到了恶意软件. 法兰克福是世 ...

  5. JavaWeb项目http请求报错:Error parsing HTTP request header

    详细报错信息如下图: 原因:一一排查后,发现是http的请求中,包含了  “ | ” 竖线特殊符号:而并不是网上说的请求url太长了的原因. 解决方法:把 | 替换为  @

  6. 使用mysql服务实现负载均衡

    mysql 长连接(tcp协议)模拟负载均衡 1.存在member,member的port与mysql服务port一致为3306 2.vip绑定浮动ip 3.开启mysql服务: #service m ...

  7. [GWCTF 2019]mypassword

    这道题(不只这道题以后也一定)要注意控制台中的信息,给出了login.js代码,会把当前用户的用户名和密码填入表单 注册个账号,登录之后给提示不是注入题 浏览一下网站功能,feedback页面可以提交 ...

  8. redis服务器性能优化

    1.系统内存OOM优化 vm.overcommit_memory Redis会占用非常大内存,所以通常需要关闭系统的OOM,方法为将“/proc/sys/vm/overcommit_memory”的值 ...

  9. rundll32 常用命令

    Rundll32 常用命令列表(1) 下面是具体的Rundll32 的命令行列表: 添加删除程序 RunDll32.exe shell32.dll,Control_RunDLL appwiz.cpl, ...

  10. Lesson 8 Trading standards

    What makes trading between rich countires difficult? Chickens slautered in the United States, claim ...