c#进行web开发的时候使用quartz定时器的详细讲解

一 前提

(1)首先需要引用Common.Logging.dll和Quartz.dll。

(2)其次,我们需要了解一些基本的知识

 Job

表示一个具体要执行的工作,需要实现IJob接口.

 JobDetail

JobDetail表示一个具体的可执行的调度程序,它指向Job.

 Trigger

代表工作的触发,什么时候执行,执行多少次

 Scheduler

代表一个执行计划,一个执行计划中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。

注意:上面是转自https://blog.csdn.net/tgjmail/article/details/77773892

二 实例

(1)下面是根据实际项目做的一个小例子。

  首先,我在这里先创建一个执行具体事务的类,它需要继承IJob,并实现唯一的Execute。

  public class SalaryJob:IJob
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
      public void Execute(IJobExecutionContext context)
      {
          string args = "";
     
          Idictomes dc = new dictomes();
          dc.Insert(args);//调用一个接口


      }

    }

其次,我们需要创建scheduler与Trigger。

public class SalaryScheduler
    {
        public static void Start()
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
            scheduler.Start();
        //    string expression = "0 */1 * * * ?";//每5秒执行一次
            string expression = "0 57 23 L * ?";//每月最后一天的23点57分执行。
            IJobDetail job = JobBuilder.Create<SalaryJob>().Build();
            ITrigger trigger = TriggerBuilder.Create()
              .WithIdentity("triggerName", "groupName")
               .WithCronSchedule(expression)
               .Build();
     

            scheduler.ScheduleJob(job, trigger);
 
        
        
        }


    }

注意上面的salaryjob类是具体执行的实现类。

然后,在Global.asax文件中的Application_Start中调用start()方法,因为Application_Start在程序初始化的时候执行。在Web应用程序的生命周期里就执行一次,这里只能放一些公用的信息,比如HttpApplicationState。

这样,在运行之后就会按照设定的定时器来执行了。

阅读更多
换一批

没有更多推荐了,返回首页