原文:【Quartz】定时器初步实验(一)

    以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不。

第一步:创建项目

创建一个新项目,可以是ASP.NET MVC,WebForms,Winforms等多种.Net项目,这里使用的是VS2017,创建了一个MVC项目

创建完成后大致项目层级为:

第二部:引用

我们首先要在项目中引用Quartz.dll。

你可以去官网现在dll:https://github.com/quartznet/quartznet

也可以使用nuget管理直接在项目安装:

Install-Package Quartz

输入安装命令后出现即安装成功:

然后在引用可以看到该dll:

第三步:创建任务

我们添加一个任务类然后实现IJob接口:

     public class HelloJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
System.Diagnostics.Debug.WriteLine("HelloWord");
return Task.FromResult(true);
}
}

千万不要忘记引用命名空间哦:

using Quartz;
using System.Threading.Tasks;

第四步:创建触发器

我这里用了一个触发器接口类。直接上代码,代码理由详情注释我就不啰嗦了。

    public class SimpleExample : IExample
{
public virtual async Task Run()
{
//创建调度器
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = await sf.GetScheduler(); //创建任务
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity("job1", "group1")
.Build(); //创建触发器
// DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);//定义触发规则
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trg1", "group1")
// .StartAt(runTime)
.WithCronSchedule("0/5 * * * * ?") //5秒执行一次
.Build();
//将任务与触发器添加到调度器中
await sched.ScheduleJob(job, trigger);
//启动任务
await sched.Start();
}
}

第五步:也是最后一步

我们只需要调用运行就行了,我因为是试一试能不能运行,所有我直接写在了Global.asax文件的Application_Start方法里:

 protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
IExample example = ObjectUtils.InstantiateType<IExample>(typeof(SimpleExample));
example.Run().ConfigureAwait(false);
}

最后看一下结果吧:我设置在输出台打印“HelloWord” 每隔5秒

好了以上就是Quartz的基本实现。

【Quartz】定时器初步实验(一)的更多相关文章

  1. Spring的quartz定时器同一时刻重复执行二次的问题解决

    最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...

  2. 学习笔记--Quartz定时器

    文章同步发表在博主网站朗度云,传输门:http://www.wolfbe.com/detail/201608/338.html 1.Quartz定时器执行流程 Quartz需要定义执行任务.触发器,在 ...

  3. java定时器,Spring定时器和Quartz定时器

    一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...

  4. java Quartz定时器任务与Spring task定时的几种实现,

    java Quartz定时器任务与Spring task定时的几种实现 基于java 的定时任务实现, Quartz 时间详细配置    请查阅   http://www.cnblogs.com/si ...

  5. 实现quartz定时器及quartz定时器原理介绍(转)

    一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可.1.Job表示一个工作,要执行的具体内容.此接口中只有一个方法void execute(Job ...

  6. 实现quartz定时器及quartz定时器原理介绍

    今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍

  7. Quartz定时器中Cron时间控制表达式写法

    Quartz定时器中Cron时间控制表达式写法:   1.表示形式 该表达式简洁简单,总共有7个空格分割的表达子式,形式为[* * * * * * *],而这七个位置上的东西表达方式有很多,意义从左往 ...

  8. Spring的quartz定时器重复执行二次的问题解决

    Spring的quartz定时器同一时刻重复执行二次的问题解决 最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的ha ...

  9. 动态添加定时任务-quartz定时器

    Quartz动态添加.修改和删除定时任务 在项目中有一个需求,需要灵活配置调度任务时间,刚开始用的Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务 ...

随机推荐

  1. css3-10 如何控制元素的显示和隐藏(display和visibility的区别是什么)

    css3-10 如何控制元素的显示和隐藏(display和visibility的区别是什么) 一.总结 一句话总结:使用的时候直接在元素的样式中设置display和visibility属性即可.推荐使 ...

  2. 从Lua调用C

    从Lua调用C: 方式:C函数从栈中获取函数參数(第一个參数总是局部栈的索引1),将结果压入栈中,C函数须要返回结果数量. 每一个函数都有自己的局部私有栈 样例: static int l_sin(l ...

  3. [Angular] Testing @Input and @Output bindings

    Component: import { Component, Input, ChangeDetectionStrategy, EventEmitter, Output } from '@angular ...

  4. Ubuntu10.04下安装Qt4和创建第一个Qt程序

    1.首先安装Qt4并采用Qt Creator进行开发演示 (1)在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfi ...

  5. php计算两个坐标直线距离

    function rad($d) { return $d * 3.1415926535898 / 180.0; } function GetDistance($lat1, $lng1, $lat2, ...

  6. php实现求二进制中1的个数(右移、&、int32位)(n = n & (n - 1);)

    php实现求二进制中1的个数(右移.&.int32位)(n = n & (n - 1);) 一.总结 1.PHP中的位运算符和java和c++一样 2.位移运算符看箭头方向,箭头向左就 ...

  7. .NET-架构优化实战-前端优化

    原文:.NET-架构优化实战-前端优化 前言 上一篇<.NET-架构优化实战-梳理篇>整理了基本的业务知识,同时也罗列了存在的问题,本篇主要是针对任务列表的页面进行性能优化. 该篇主要涉及 ...

  8. JAVA生成二维码并转化为二进制在页面展示

    引用jar包: zxing的core包,下载路径可参考:http://download.csdn.net/detail/sxg0205/9461106 java代码: 引用包: import java ...

  9. 【SAE 部署 JavaWeb 项目报 404 错误】

    个人学习整理,如有不足之处,请不吝不吝赐教.转载请注明:@CSU-Max 今天写了一个小的 JavaWeb 项目传到 SAE 上.訪问的时候出错. 本地測试是正常的,并且曾经做微信平台开发的时候上传的 ...

  10. 编写Linux中sh文件执行时出现莫名字符的问题

    今天在项目中需要编写一个sh,执行一些初始化操作,然后调取原来的执行文件,但是我在操作中主要到了首行需要加入#!/bin/sh 的表达式,但是在执行时总是报错,原因是每次执行,表达式后边都会添加一个莫 ...