亲宝软件园·资讯

展开

Quartz配置

后跳 人气:0

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时间管理大师管控

 

 

加载全部内容

相关教程
猜你喜欢
用户评论