zoukankan      html  css  js  c++  java
  • Quartz.Net学习笔记(一)

    概述

         Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。

    第一个实例

          Quartz.NET是通过调用器(scheduler)来调用作业的,调用器在使用前首先要实例化它,实例化是使用SchedulerFactory可以完成scheduler的实例化。用户可直接地实例化这个工厂类并且直接使用工厂的实例(例如下面的例子)。

            Dim sf As ISchedulerFactory
            sf = New StdSchedulerFactory()
            Dim sched As IScheduler
            sched = sf.GetScheduler()

           一旦一个scheduler被实例化,它就可以被启动(start),并且处于驻留模式,直到被关闭(shutdown)。注意,一旦scheduler被关闭(shutdown),则它不能再重新启动,除非重新实例化它。除非scheduler 被启动或者不处于暂停状态,否则触发器不会被触发(任务也不能被执行)。

           相信大家对上面的代码能看懂,不再废话,继续

           下面我们开始写作业类,代码如下:

    Imports Quartz
    Imports log4net
    Public Class helloJob
        Implements IJob
        Dim log As ILog
        Public Sub New()
            '创建日志记录组件实例   (log4net很不错的日志组件)
            log = log4net.LogManager.GetLogger("王百锋")
        End Sub
        '接口函数的实现
        Public Sub Execute(ByVal context As Quartz.IJobExecutionContext) Implements Quartz.IJob.Execute
            log.Info("test:" + System.DateTime.Now.ToString())
        End Sub
    End Class

            非常简单。下面讲作业应该如何调度、开始、执行、关闭。先上代码:

    Imports Quartz.Impl
    Imports Quartz
    Imports log4net
    Imports System.Threading
    
    Public Class test7
        Inherits System.Web.UI.Page
    
        Dim log As ILog
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            log = log4net.LogManager.GetLogger("Donglisoft.com Test")
    
            Dim sf As ISchedulerFactory
            sf = New StdSchedulerFactory()
            Dim sched As IScheduler
            sched = sf.GetScheduler()
    
            '计算作业调度的时间
            Dim runTime As DateTimeOffset
            runTime = DateBuilder.EvenSecondDate(System.DateTime.Now.AddMinutes(1))
    
            '定义作业
            Dim job As IJobDetail = JobBuilder.Create(Of helloJob)().WithIdentity("job1", "group1").Build()
    
            '创建触发器,设置触发器调度的时间
            Dim trigger As ITrigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartAt(runTime).Build()
    
            '调解器装配调度作业
            sched.ScheduleJob(job, trigger)
    
            '开启调度器,这时并不调度作业(如果调度时间未到),当作业执行时间到时,调度器开启触发器调度作业执行(此时作业真正执行)
            sched.Start()
    
            '当调度器开始
            log.Info("------- Started Scheduler -----------------")
            log.Info(System.DateTime.Now.ToString())
    
            'run the job!
            log.Info("------- Waiting 65 seconds... -------------")
    
            'wait 65 seconds to show jobs
            Thread.Sleep(TimeSpan.FromSeconds(120))
    
            'shut down the scheduler
            log.Info("------- Shutting Down ---------------------")
            log.Info(System.DateTime.Now.ToString())
            sched.Shutdown(True)
            log.Info("------- Shutdown Complete -----------------")
    
        End Sub
    
    End Class

    这是个比较简单的例子!

  • 相关阅读:
    叶落归根(hometown)
    设置(settings)
    文明距离(civil)
    计算机基础知识
    gojs插件使用教程
    编程语言分类
    dp优化简单总结
    Splay入门题目 [HNOI2002]营业额统计
    hdu3415:最大k子段和,单调队列
    hdu5072(鞍山regional problem C):容斥,同色三角形模型
  • 原文地址:https://www.cnblogs.com/jason819/p/2730978.html
Copyright © 2011-2022 走看看