zoukankan      html  css  js  c++  java
  • Quartz配置

    1.新建项目

    新建一个.NetFramework控制台引用程序。

    2.添加引用

    添加:

      Quartz

      Quartz.Jobs

      Quartz.Plugins

    3.添加Quartz.xml

     quartz_jobs.xml

    4.创建MyJob类

    添加一个类,实现IJob

    namespace QuartzDemo
    {
        class MyJob : IJob
        {
            public static int i = 0;
            public Task Execute(IJobExecutionContext context)
            {
                //做什么(例子:写文件)
                string path = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".txt";      
                File.WriteAllText(path, $"这是第{i++}次执行");
                return Task.CompletedTask;
            }
        }
    }

    5.配置Quartz.xml

    可以进行多配置,C+V +稍微改动

     源码:

    <?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 任务配置-->
        <job>
          <name>MyJob</name>
          <group>MyJobGroup</group>
          <description>任务</description>
          <job-type>QuartzDemo.MyJob,QuartzDemo</job-type>
          <durable>true</durable>
          <recover>false</recover>
        </job>
        <trigger>
          <!--cron:https://cron.qqe2.com/-->
          <cron>
            <name>JobATrigger</name>
            <group>ABCGroupTrigger</group>
            <job-name>MyJob</job-name>
            <job-group>MyJobGroup</job-group>
            <!--<start-time>2015-01-22T00:00:00+08:00</start-time>-->
            <cron-expression>0/3 * * * * ?</cron-expression>
          </cron>
        </trigger>
      </schedule>
    </job-scheduling-data>

    6.Main方法中启动调度器

    var scheduler =Task.Run(() => StdSchedulerFactory.GetDefaultScheduler()).Result;
    或者创建一个类 来控制启动停止。。。。等方法。
    namespace QuartzDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                var scheduler = new StdSchedulerFactory().GetScheduler().Result;
                scheduler.Start();//启动
                Thread.Sleep(20000); //等待20秒
                scheduler.Shutdown();//停止
            }
        }
    }

    7.添加Config(Quartz.config>App.config>Web.config)

    什么项目就写在对应的配置文件中。也可以单独通过 Quartz.config控制   或者   MVC直接写在Web.config   WINForm写在App.config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="quartz" type="System.Configuration.NameValueSectionHandler" />
      </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
        </startup>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <quartz>
        <!-- 指定调度器的实例名称 -->
        <add key="quartz.scheduler.instanceName" value="TestHandler" />
        <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool,Quartz" />
        <!-- 设置线程池的最大线程数量 -->
        <add key="quartz.threadPool.threadCount" value="10" />
        <!-- 设置作业中每个线程的优先级,可取 System.Threading.ThreadPriority 中的枚举-->
        <add key="quartz.threadPool.threadPriority" value="2" />
        <add key="quartz.jobStore.misfireThreshold" value="60000" />
        <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
        <add key="quartz.serializer.type" value="binary" />
        <!-- Plugin配置 -->
        <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin,Quartz.Plugins" />
        <!-- 作业配置文件路径及名称 -->
        <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml" />
      </quartz>
    </configuration>

    8.运行项目

    项目结构:

    Bin/Debug中的定时写的事情。仔细看时间,除第一次外,都是3秒一次。通过Quartz.xml的Trigger时间管理大师管控

     

  • 相关阅读:
    如何在Ubuntu18.04(Bionic Beaver)系统安装Teamviewer远程控制软件
    glVertexAttribPointer 用法简介
    OpenGL ES SL 3.0规范中以前的attribute改成了in varying改成了out
    C++多线程中用临界区控制全局变量的访问冲突问题
    fatal error LNK1169: 找到一个或多个多重定义的符号或多个.c/.cpp文件想同时调用定义在.h文件里面的全局变量,防止重定义变量问题。
    WaitForSingleObject的详细用法
    [转]Win7 + Ubuntu 18.04 LTS (Bionic Beaver)双系统安装方法
    [Android Pro] Android打包一个Apk后,如何查看它的VersionCode、VersionName 等等。
    [Android] 查看Android中的AlarmManager事件
    [Android Pro] proguard
  • 原文地址:https://www.cnblogs.com/Zingu/p/14544193.html
Copyright © 2011-2022 走看看