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
    {
        /// 
        /// 
        /// 
        /// 
      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().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。

c#进行web开发的时候使用quartz定时器的详细讲解_第1张图片

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

你可能感兴趣的:(c#)