新建解决方案和工程Quartz.net

  使用Power Shell 命令 Install-Package Quartz 导入Quartz.net程序集

  新建一个计划TestJob

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Quartz.net
{
public class TestJob : IJob
{
public void Execute(IJobExecutionContext context)
{
try
{
Console.WriteLine("执行计划...");
}
catch (Exception)
{ throw;
}
}
}
}

    从程序中控制计划时间的用法

using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Quartz.net
{
class Program
{
static void Main(string[] args)
{
// 如果配置了Log4Net 可取消注释
//Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info }; // 从工厂里获取调度实例
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); // 创建一个任务
IJobDetail job = JobBuilder.Create<TestJob>()
.WithIdentity("MyJob", "group1")
.Build(); // 创建一个触发器
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds() // 每10秒执行一次
.RepeatForever()) // 无限次执行
.Build(); // 每天执行的触发器
ITrigger t = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group2")
.ForJob(job)
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(, )) // 每天9:30执行一次
//.ModifiedByCalendar("myHolidays") // but not on holidays 设置那一天不知道
.Build(); // 每天执行的将触发器换成天的就可以了
scheduler.ScheduleJob(job, trigger);
}
}
}

  从配置文件设置定时计划的用法,先看App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections> <quartz>
<add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="2" /> <add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" /> <!--******************************Plugin配置********************************************* -->
<add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
<add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>
</quartz> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

  再看quartz_jobs.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- This file contains job definitions in schema version 2.0 format -->
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<processing-directives>
<overwrite-existing-data>true</overwrite-existing-data>
</processing-directives> <schedule>
<!--任务-->
<job>
<!--任务名称,同一个group中多个job的name不能相同-->
<name>TestJob</name>
<!--任务分组-->
<group>sampleGroup</group>
<!--任务描述-->
<description>Sample job for Quartz Server</description>
<!--任务类型,任务的具体类型及所属程序集-->
<job-type>Quartz.NETConfig.TestJob, Quartz.NETConfig</job-type>
<durable>true</durable>
<recover>false</recover>
</job> <!--任务触发器-->
<trigger>
<!--简单任务的触发器,可以调度用于重复执行的任务-->
<simple>
<!--触发器名称,同一个分组中的名称必须不同-->
<name>sampleSimpleTrigger</name>
<!--触发器组-->
<group>sampleSimpleGroup</group>
<!--描述-->
<description>Simple trigger to simply fire sample job</description>
<!--要调度的任务名称,该job-name必须和对应job节点中的name完全相同-->
<job-name>TestJob</job-name>
<!--调度任务(job)所属分组,该值必须和job中的group完全相同-->
<job-group>sampleGroup</job-group>
<!--任务开始时间-->
<start-time>2012-04-01T08:00:00+08:00</start-time>
<misfire-instruction>SmartPolicy</misfire-instruction>
<!--任务执行次数 -1 为无限次执行-->
<repeat-count>-1</repeat-count>
<!--任务触发间隔(毫秒)-->
<repeat-interval>10000</repeat-interval>
<!--每3秒中执行一次-->
</simple>
</trigger> <job>
<!--任务名称,同一个group中多个job的name不能相同-->
<name>StatisticsJob</name>
<!--任务分组-->
<group>sampleGroup1</group>
<!--任务描述-->
<description>Sample job for Quartz Server</description>
<!--任务类型,任务的具体类型及所属程序集-->
<job-type>Quartz.NETConfig.StatisticsJob, Quartz.NETConfig</job-type>
<durable>true</durable>
<recover>false</recover>
</job>
<trigger>
<cron>
<name>TriggerJob001</name>
<group>ProjectJobs</group>
<job-name>StatisticsJob</job-name>
<job-group>sampleGroup1</job-group>
<!--秒 分 时 日(星期) 月 年-->
<cron-expression>0/3 * * * * ?</cron-expression>
</cron>
</trigger> <!--每天0点定时执行 0 0 0/1 * * ? -->
<job>
<name>DefaultJob</name>
<group>sampleGroup2</group>
<description>Sample job for Quartz Server</description>
<job-type>Quartz.NETConfig.DefaultJob, Quartz.NETConfig</job-type>
<durable>true</durable>
<recover>false</recover>
</job>
<trigger>
<cron>
<name>TriggerJob002</name>
<group>ProjectJobs</group>
<job-name>DefaultJob</job-name>
<job-group>sampleGroup2</job-group>
<cron-expression>0 0 0/1 * * ?</cron-expression>
</cron>
</trigger> </schedule>
</job-scheduling-data>

  用配置调比较简单

// 从工厂里获取调度实例
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();

  配置的任务也没什么

public class DefaultJob : IJob
{
public void Execute(IJobExecutionContext context)
{
try
{
// 开始统计数据
Console.WriteLine("开始统计数据...");
}
catch (Exception)
{ throw;
}
}
}
public class StatisticsJob : IJob
{
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("表达式执行调度任务...");
}
}
public class TestJob : IJob
{
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("执行调度任务");
}
}

  以上就是定时计划的用法,可参考文档 http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/more-about-triggers.html

Quartz.net 定时计划使用的更多相关文章

  1. 用abp vNext快速开发Quartz.NET定时任务管理界面

    今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发.大伙最好跟着一起敲一下代码,当然源码 ...

  2. spring quartz分布式任务计划

    spring quartz分布式任务计划 环境: 通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz ...

  3. Oracle定时计划快速使用

    Oracle定时计划快速使用 前言: SQL Server中有相关的定时计划,可以直接打开sql server 的任务管理器进行配置,可以方便.快速实现定时执行相应任务.相应的Oracle也有对应的定 ...

  4. MySQL架构优化:定时计划任务与表分区

    转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...

  5. Windows定时计划执行Python

    先看下定时执行的py文件 #coding:gbk from selenium import webdriver import time,os driver = webdriver.PhantomJS( ...

  6. Linux定时计划(crontab)使用说明

    一.设置定时计划步骤 第一步,编缉计划文件:crontab -e 第二步,在文件中写入计划,格式如:minute hour day month week command.如0 8 * * * sh / ...

  7. 【Oracle】Windows定时计划每天备份数据库

    脚本 OracleBakEveryDay.bat @echo off echo ================================================ echo Window ...

  8. spring和Quartz的定时功能

    一:前沿 最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行. ...

  9. Hosted Services+Quartz实现定时任务调度

    背景 之前.net core使用quartz.net时,总感觉非常变扭,百度和谷歌了N久都没解决以下问题,造成代码丑陋,非常不优雅: 1.项目启动时,要立刻恢复执行quartz.net中的任务 2.q ...

随机推荐

  1. SOA(面向服务的架构)

    前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...

  2. 查询出各个学科的前3名的同学信息的Sql

    查找各个学科的成绩前3名的学生信息Sql,有2种方法,一种是利用sql的row_number() over()函数,另一种是用子查询, 表设计如下 如果不考虑各个学科的成绩有并列的情况的话,有如下两种 ...

  3. HDU 1248 冰封王座(dp)

    Problem Description 不死巫妖王拉工资,死亡骑士得到N美元的钞票(记,只有一个纸币),战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前. 死亡骑士:"我要买 ...

  4. hdu Hat's Tea

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1288 去买茶,需要正好的钱才行,另外花的钱的个数最多  其实是一个简单的贪心问题,小的多取一点,多的少 ...

  5. React.js初探(一)

    前端框架多如牛毛的今天,团队的技术选型很重要,没有最好的,只有最合适的,这话早已经被说烂了. 但是作为一个有追求的前端,对新技术的敏感以及尝试心理还是要有的. 虽然React已经火的不行了,但由于自己 ...

  6. 线程同步synchronized

    一Java规划共享多个线程之间数据的能力. 当线程以异步方式訪问共享数据时.有时候是不安全的或者不和逻辑的. 比方卖火车票.同一时刻一个线程在读取数据,另外一个线程在处理数据,当处理数据的线程没有等到 ...

  7. csu 1503: 点弧之间的距离-湖南省第十届大学生计算机程序设计大赛

    这是--比量p并用交点连接中心不上弧.在于:它至p距离.是不是p与端点之间的最短距离 #include<iostream> #include<map> #include< ...

  8. ArcGIS Runtime SDKs v10.2.4最新(Android、iOS、OSX和.NET)

    ArcGIS Runtime SDKs v10.2.4最新,它包含:Android.iOS.OS X和.NET四大平台,用户和开发人员可以登录Esri最新的SDK安装包.或者通过云盘下载(http:/ ...

  9. 移动客户端与服务端Session那点秘密

    众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个session会话,随着浏览器的关闭而会话结束.但是移动客户端咋整呢(IOS/Android啥的) ...

  10. ios 设备基本信息检测

    开发ios确实会让人身心愉悦(相对于deskop,android),ios app更多的让人集中注意力到它本身的体验,性能.这非常好,我非常喜欢相对完美的事物. 最近遇到一些乱七八糟的需求.需要获取一 ...