Quartz.Net的简单使用
1、安装Quartz.Net
Install-Package Quartz -Version 2.5.0
2、需要执行定时任务的代码,新建一个类,继承IJob接口,并实现该接口
public class TestJob : IJob
{
public void Execute(IJobExecutionContext context)
{
try
{
Console.WriteLine("当前时间是" + DateTime.Now.ToString());
}
catch (Exception ex)
{ throw;
}
}
}
3、在程序中需要执行这个定时任务的地方写如下代码
计划者( IScheduler)、工作( IJob)、触发器( Trigger)。给计划者一个工作(Job),让他在 Trigger(什么条件下做这件事) 触发的条件下执行这个工作(Job)
static void Main(string[] args)
{
IScheduler sched = new StdSchedulerFactory().GetScheduler();
JobDetailImpl jdBossReport = new JobDetailImpl("jdTest", typeof(TestJob));
IMutableTrigger triggerBossReport = CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(23, 41).Build();//每天 23:45 执行一次
triggerBossReport.Key = new TriggerKey("triggerTest");
sched.ScheduleJob(jdBossReport, triggerBossReport);
sched.Start();
}
其他定时任务:
CronScheduleBuilder.AtHourAndMinuteOnGivenDaysOfWeek(13, 55,DayOfWeek.Friday, DayOfWeek.Sunday) //每周五、周日的 13:55 执行;
CronScheduleBuilder.WeeklyOnDayAndHourAndMinute() //每周固定时间
CronScheduleBuilder.MonthlyOnDayAndHourAndMinute() //每月固定时间
static void Main(string[] args)
{
IScheduler sched = new StdSchedulerFactory().GetScheduler();
JobDetailImpl jdBossReport = new JobDetailImpl("jdTest", typeof(TestJob)); CalendarIntervalScheduleBuilder builder = CalendarIntervalScheduleBuilder.Create();
builder.WithInterval(3, IntervalUnit.Second);//每 3 秒钟执行一次
IMutableTrigger triggerBossReport = builder.Build();
triggerBossReport.Key = new TriggerKey("triggerTest");
sched.ScheduleJob(jdBossReport, triggerBossReport);
sched.Start();
}
4、需要注意的问题:
1)、IJob 的 Execute 中异常问题 :由于 Job 是运行在单独的线程中,因此如果 Execute 中如果发生异常,调试的时候也是不会断点暂停的,好像什么都没发生一样。如果运行在ASP.Net 中,也不会触发 ASP.net 的“未处理异常处理程序”,就好像任务没执行一样。为了当出现异常的时候我们能及早发现, 需要把 Execute 的代码 try...catch...然后把异常处理(比如记录到日志)。
2)、IJob 中怎么样 MapPath: 由于 Job 是运行在单独的线程中,是拿不到HttpContext.Current 的,那怎么 MapPath 呢? HostingEnvironment.MapPath()。 也不能在Job 中做 Request、 Session 等和 Web 相关的工作。
Quartz.Net的简单使用的更多相关文章
- Quartz 2D绘制简单图形
在Quartz 2D中,绘图是通过图形上下文进行绘制的,以下绘制几个简单的图形 首先先创建一个QuartzView.swift文件继承自UIView,然后实现drawRect方法: import UI ...
- quartz定时任务的简单使用
开发环境: springmvc quartz-2.2.3在官网下载的. 步骤: 1.首先在web.xml中加入以下代码: <servlet> <servlet-name>Qua ...
- Quartz入门及简单实现
Quartz简介 Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统.Quartz可以用来创建执行数十,数百乃至数万个作业的 ...
- SpringBoot整合Quartz定时任务 的简单实例 2
(1)什么是Quartz?(2)Quartz的特点:(3)Quartz专用词汇说明:(4)Quartz任务调度基本实现原理: 接下来看下具体的内容: (1)什么是Quartz? Quartz是一个完全 ...
- 热词统计以及Quartz.net的简单使用
一.热词统计 方案一: 设计一个表:ID KeyWord Count 当用户再输入框中查询的时候,我们就往表中插入数据,在插入之前首先判断是否已经存在keyword,存在的话,让C ...
- c# Quartz.net的简单封装
分享一个以前封装的Quartz.net类. 新建一个QuartzClass类库项目.nuget控制台输入 image.png 添加Quartz.net的引用. 我们新建一个JobBase.cs文件,里 ...
- 企业级任务调度框架Quartz(3) 一个简单的Quartz 例子
1. 一个简单的Quartz 工程 本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些.当 ...
- Quartz.net 的简单使用,创建定时任务
ISchedulerFactory sf = new StdSchedulerFactory(); sched = sf.GetScheduler(); JobDetail job = new Job ...
- spring 整合quartz的方式——简单介绍
一.继承QuartzJobBean,重写executeInternal方法 <bean name="statQuartzJob" class="org.spring ...
- quartz一次简单应用经历
项目里使用到每月的第一天需要定时统计上一个月的某种数据,这个时候,我开始第一次知道任务调度这么一个专业词汇.也初次了解quartz这个任务调度框架.网上看了好几篇博文,有种quartz越看越难的感觉, ...
随机推荐
- ThinkPad E580 装Ubuntu系 系统无WIFI 解决办法
首先得下载 最新的驱动,我之前因为自己的下载的驱动不够新,导致我的驱动一直装不上去 https://github.com/tomaspinho/rtl8821ce 这个是最新的驱动的下载 地址,建议从 ...
- CSS特效集锦(9款 , 总有一款是你喜欢的)
主要是: 穿越时空特效, 图片放大镜, 3D相册, 立方体相册, 昼夜更替特效, 飘雪, 七彩雨, 签名生成器, 水波纹动画等 代码部分 <section> <div class=& ...
- AIFF和AIFF-C音频交换文件格式的简单介绍
正文 AIFF,全称 Audio Interchange File Format,可简写为 Audio IFF 或 AIFF,是苹果公司推出的一种音频文件格式. AIFF-C,是 AIFF 的扩充,C ...
- 如何使用 ArrayPool
如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool. 使用 ArrayPool Arr ...
- 接口自动化库-apist
前言 目前很多公司用jmeter或者RF框架来实现接口自动化,确实是可以实现,但不利于CI/CD. 为了方便后续的可拓展性.可维护性.可复用性,项目leader在技术选型的时候应当以趋势.主流的为主, ...
- 利用反射和代理简单模拟mybatis实现简单的CRUD
利用反射接口做java数据库操作 今天突发奇想,好像一些基本的CRUD操作路数都是一样的,又想到mybatis中的操作,便想着简单的模拟一下.随便写写,就当练习反射了. Dao接口类: 这里使用泛型, ...
- Cesium加载三维路线
1. 概述 将路线加载到三维地图中,能直观显示道路的坡度变化,协同DEM和遥感影像,能极大丰富道路的可视化效果 本文此处基于Cesium,加载地形数据,叠加遥感影像,再叠加路网数据,形成三维地图,效果 ...
- PG统计信息和系统表
一.PG统计信息概述 pg的统计信息主要分为两种: 第一类统计信息是是负载指标"统计信息"(Monitoring stats),通过stat collector进程进行实时采集更新 ...
- LeetCode-442 数组中重复的数据
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-all-duplicates-in-an-array 题目描述 给你一个长度为 n 的整 ...
- MicroPython 之 PYBoard
一.MicroPython 简介 Python,是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public Licens ...