c# quartz定时任务框架的使用

一、新建windows服务项目,并从nuget引用下图标记的类库:

二、鼠标右键单击Service1.cs,点击查看代码,把类文件修改成如下:

Service1.cs

    public partial class Service1 : ServiceBase
    {
        private IScheduler scheduler;

        public Service1()
        {
            InitializeComponent();

            #region Quartz
            try
            {
                //调度器
                ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
                scheduler = schedulerFactory.GetScheduler();
                //任务、触发器执行配置
                XMLSchedulingDataProcessor processor = new XMLSchedulingDataProcessor(new SimpleTypeLoadHelper());
                Stream s = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + @"\Config\quartz_jobs.xml").BaseStream;
                processor.ProcessStream(s, null);
                processor.ScheduleJobs(scheduler);
            }
            catch (Exception ex)
            {
                //log 启动Quartz失败
            }
            #endregion
        }

        protected override void OnStart(string[] args)
        {
            scheduler.Start();
            //log 服务启动
        }

        protected override void OnStop()
        {
            if (scheduler != null)
            {
                scheduler.Shutdown(false);
            }
            //log 服务结束
        }
    }

三、在windows服务项目下建一个Config文件夹,并添加quartz_jobs.xml配置文件如下:

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>
    <!--TestJob Start-->
    <job>
      <name>TestJob</name>
      <group>JobGroup</group>
      <description>测试定时任务</description>
      <job-type>WindowsService1.Job.TestJob,WindowsService1</job-type>
      <durable>true</durable>
      <recover>false</recover>
    </job>
    <trigger>
      <!--<simple>
        <name>TestTrigger</name>
        <group>TriggerGroup</group>
        <job-name>TestJob</job-name>
        <job-group>JobGroup</job-group>
        <misfire-instruction>SmartPolicy</misfire-instruction>
        <repeat-count>-1</repeat-count>
        <repeat-interval>1000</repeat-interval>
      </simple>-->
      <cron>
        <name>TestTrigger</name>
        <group>TriggerGroup</group>
        <job-name>TestJob</job-name>
        <job-group>JobGroup</job-group>
        <start-time>2018-10-12T06:00:00+08:00</start-time>
        <cron-expression>0 0/1 * * * ?</cron-expression>
      </cron>
    </trigger>
    <!--TestJob End-->
  </schedule>
</job-scheduling-data>

四、在windows服务项目下建一个Job文件夹,并添加TestJob.cs文件如下:

TestJob.cs

    [PersistJobDataAfterExecution]//保存执行状态
    [DisallowConcurrentExecution]//不允许并发执行
    public class TestJob : IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            //to do...
        }
    }

五、在windows服务项目下建一个Bat文件夹,并添加如下批处理文件:

install.bat

sc create 服务名称 binPath= "E:\WindowsService1.exe" start= auto
sc description 服务名称 "服务描述"
pause

start.bat

net start 服务名称
pause

stop.bat

net stop 服务名称
pause

uninstall.bat

sc delete 服务名称
pause

  

原文地址:https://www.cnblogs.com/by-lhc/p/9790267.html

时间: 2024-08-30 12:13:51

c# quartz定时任务框架的使用的相关文章

(2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍. 一.增加所依赖的JAR包1.增加Spring的Maven依赖 <dependency> <groupId>org

quartz定时任务框架调度机制解析

转自集群调度机制调研及源码分析 quartz2.2.1集群调度机制调研及源码分析引言quartz集群架构调度器实例化调度过程触发器的获取触发trigger:Job执行过程:总结:附: 引言 quratz是目前最为成熟,使用最广泛的java任务调度框架,功能强大配置灵活.在企业应用中占重要地位.quratz在集群环境中的使用方式是每个企业级系统都要考虑的问题.早在2006年,在ITeye上就有一篇关于quratz集群方案的讨论:http://www.iteye.com/topic/40970 IT

集群式Quartz定时任务框架实践

在日常开发汇总,经常会遇到需要定时任务的场景,简单的,可以使用Spring的定时任务调度框架,也可以使用Quartz.无论使用哪种,都需要解决一个问题,那就是集群问题.一般情况下,定时任务能且仅能运行于一台应用实例上. 前提 本文工程基于spring boot 2.1.7.RELEASE 工程配置  一.pom依赖 如下图所示: 二.yml配置 yml配置如下图所示: 三.quartz.properties quartz相关属性配置如图: 注意: 1.重中之重,要设置org.quartz.job

quartz定时任务框架之实例

import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.util.Date; public class MyJob implements Job { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println(new Date() + ":

atititt.java定时任务框架选型Spring Quartz 注解总结

atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增加context,task命名空间xml: 2 2.2. 增加xsi:schemaLocation valide 2 2.3. 我们的task任务扫描注解in spr.xml 2 2.4. 设置运行方法 3 2.5. 设置输出日志 3 3. 运行测试sprX走ok兰. 4 4. Quartz Sch

QUARTZ.NET 一个定时任务框架

<1> Quartz.NET-1.0.3文件下载地址 (这是老版本了,现在已经有新版本了.用法好像不一样了) 首先要添加Quartz.NET-1.0.3 文件下面的  bin/3.5/Release/Quartz/ 目录下面的Common.Logging.dll文件和Quartz.dll文件 然后添加引用.将连个文件引入到项目中来 using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; u

Quartz.Net的使用(简单配置方法)定时任务框架

Quartz.dll 安装nuget在线获取dll包管理器,从中获取最新版 Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”.“每天22点执行”.“每月18日的下午执行8次”等各种定时任务. Quartz.Net中的概念:计划者(IScheduler).工作(IJob).触发器(Trigger).给计划者一个工作,让他在Trigger(什么条件下做这件事)触发的条件下执行这个工作 将要定时执行的任务的代码写到实现IJob接

spring框架整合使用定时任务框架java quartz的示例代码配置

原创整理不易,转载请注明出处:spring框架整合使用定时任务框架java quartz的示例代码配置 代码下载地址:http://www.zuidaima.com/share/1775583461723136.htm 有时候我们的任务(Job)需要再某些任务完成之后才能进行:例如从旧的数据库批量导数据的时候:需要现将被其他数据依赖的数据导入新的数据库:然后再进行关系的导入..在这种情况下我们就可以使用Quartz的listener来做文章了. 首先我们写一个主任务的类,命名为MainJob:她

Spring quartz定时任务service注入问题

今天想单元测试一下spring中的quartz定时任务,一顿折腾,到最后总是发现job类里注入的service为null.一开始还以为spring的配置问题,各种找原因,最后还是确定是没有注入. 就去网上搜搜吧.也找出来一些眉目.简单的理解这个原因是job是在quartz中实例化出来的,不受spring的管理.所以就导致注入不进去了.参考这个文章 http://www.tuicool.com/articles/Qjyamu 找着试试的态度,就按照文章里说的.new一个类 public class