Asp.net mvc 3 停止Quartez.net调度程序

Asp.net mvc 3 停止Quartez.net调度程序,asp.net-mvc-3,quartz.net,Asp.net Mvc 3,Quartz.net,我有一个web应用程序,我想实现我正在使用Quartez.Net库的调度器 我在Global.asax中向应用程序添加了以下代码 protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes);

我有一个web应用程序,我想实现我正在使用Quartez.Net库的调度器

我在Global.asax中向应用程序添加了以下代码

  protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        MyScheduler.StartScheduler();
    }
我创建了以下类来定期开始我的工作

public class MyScheduler
 {
      public void StartScheduler()
       {
        // First we must get a reference to a scheduler
        ISchedulerFactory sf = new StdSchedulerFactory();
        IScheduler sched = sf.GetScheduler();

        // computer a time that is on the next round minute
        DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);

        // define the job and tie it to our HelloJob class
        IJobDetail job = JobBuilder.Create<MyJob>()
            .WithIdentity("job1", "group1")
            .Build();

           ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .WithDailyTimeIntervalSchedule(
                    x => x.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(14, 41))
                             .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(14,43))
                             .WithIntervalInSeconds(30))
                .Build();

        // Tell quartz to schedule the job using our trigger
        sched.ScheduleJob(job, trigger);


        // Start up the scheduler (nothing can actually run until the 
        // scheduler has been started)
        sched.Start();           
      }
   }
公共类MyScheduler
{
公共无效StartScheduler()
{
//首先,我们必须获得对调度程序的引用
isSchedulerFactory sf=新StdSchedulerFactory();
isScheduler sched=sf.GetScheduler();
//计算机是下一轮的时间
DateTimeOffset运行时=DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
//定义作业并将其绑定到HelloJob类
IJobDetail job=JobBuilder.Create()
.WithIdentity(“工作1”、“组1”)
.Build();
ITrigger trigger=TriggerBuilder.Create()
.WithIdentity(“触发器1”、“组1”)
.使用DailyTimeIntervals时间表(
x=>x.StartingDailyAt(一天的时间、小时和分钟(14,41))
.EndingDailyAt(一天的时间、小时和分钟(14,43))
.间隔秒(30))
.Build();
//告诉quartz使用触发器安排作业
sched.ScheduleJob(作业,触发器);
//启动计划程序(在
//调度程序(已启动)
sched.Start();
}
}

我想知道,如果我让调度程序运行而不停止它,是否有任何问题,因为您正在运行调度程序,所以它应该是这样工作的。 您必须知道,您的应用程序可能会因为不活动而关闭,因此您的计划程序将无法工作。

.

感谢LeftyX发表的这篇有用的博文