zoukankan      html  css  js  c++  java
  • Quartz.net Tutorial Lesson 1

    第一课:使用Quartz.net

    关键字:

    IschedulerFactory:调度工厂

    IScheduler:调度器

    IJob:任务

    JobDetail:任务明细

    Trigger:任务触发器

    在我们使用scheduler之前,它需要被实例化,因此,我们使用了一个IschedulerFactory的实现。

    一旦scheduler被实例化,它可以被启动,并处于备用模式(我们可以理解为监听状态),并且可以被关闭, 注意:一旦一个scheduler被关闭,除非重新实例化,否则它无法重新启动。并且scheduler必须在启动状态,并且非暂停状态,triggers才可以执行。

    下面是一段简单的实例代码,如何创建并启动一个scheduler实例,并且如何调度一个任务的执行。

    config:

    View Code
    <?xml version="1.0"?>
    <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"/>
    </quartz>
    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
    </configuration>

    jobImpl

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Quartz;

    namespace QuartzConsoleDemo
    {
    class PrintDate : IJob
    {
    public void Execute(JobExecutionContext context)
    {
    Console.WriteLine(DateTime.Now.ToString(
    "yyyy-MM-dd"));
    }
    }

    class PrintHello : IJob
    {

    public void Execute(JobExecutionContext context)
    {
    Console.WriteLine(
    "Hello, Guys!");
    }
    }
    }

    program

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Quartz;
    using Quartz.Impl;

    namespace QuartzConsoleDemo
    {
    class Program
    {
    static void Main(string[] args)
    {
    // 创建调度工厂
    ISchedulerFactory schedFact = new StdSchedulerFactory();
    // 创建一个调度实例
    IScheduler sched = schedFact.GetScheduler();
    // 开始执行调度任务
    sched.Start();

    // 添加一个执行明细(任务)
    JobDetail job = new JobDetail("PrintDate", null, typeof(PrintDate));
    // 添加一个触发器(任务何时|何种条件下执行)
    Trigger trig = new SimpleTrigger("trig");
    Trigger trigger
    = TriggerUtils.MakeSecondlyTrigger(1);
    trigger.StartTimeUtc
    = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
    trigger.Name
    = "PrintTrigger";
    // 将执行明细和触发器加入调度器的监控
    sched.ScheduleJob(job, trigger);

    JobDetail jobHello
    = new JobDetail("PrintHello", null, typeof(PrintHello));
    Trigger trigger1
    = TriggerUtils.MakeSecondlyTrigger(2);
    trigger1.StartTimeUtc
    = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
    trigger1.Name
    = "PrintHelloTrigger";
    sched.ScheduleJob(jobHello, trigger1);
    }
    }
    }

    原文地址:http://quartznet.sourceforge.net/tutorial/lesson_1.html

    Lesson 1: Using Quartz

    Before you can use the scheduler, it needs to be instantiated (who'd have guessed?). To do this, you use an implementor of ISchedulerFactory.

    Once a scheduler is instantiated, it can be started, placed in stand-by mode, and shutdown. Note that once a scheduler is shutdown, it cannot be restarted without being re-instantiated. Triggers do not fire (jobs do not execute) until the scheduler has been started, nor while it is in the paused state.

    Here's a quick snippet of code, that instantiates and starts a scheduler, and schedules a job for execution:

    Using Quartz.NET

    // construct a scheduler factory
    ISchedulerFactory schedFact = new StdSchedulerFactory();
    
    // get a scheduler
    IScheduler sched = schedFact.GetScheduler();
    sched.Start();
    
    // construct job info
    JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob));
    // fire every hour
    Trigger trigger = TriggerUtils.MakeHourlyTrigger();
    // start on the next even hour
    trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);  
    trigger.Name = "myTrigger";
    sched.ScheduleJob(jobDetail, trigger); 
    



    As you can see, working with Quartz.NET is rather simple. In Lesson 2 we'll give a quick overview of Jobs and Triggers, so that you can more fully understand this example.

  • 相关阅读:
    Map1: iOS开发中定位和地图介绍
    GCD11: 创建计时器
    GCD10: 用GCD构建自己的分派队列
    GCD9: 用GCD将任务分组
    GCD8: 在GCD上让一个任务最多执行一次
    GCD7: 利用GCD延时后执行任务
    GCD6: 在GCD上异步执行非UI相关任务
    GCD5: 用GCD同步执行非UI相关的任务
    回文数
    字符串置换
  • 原文地址:https://www.cnblogs.com/snowlove67/p/2144257.html
Copyright © 2011-2022 走看看