在本地计算机上停止Quartz作业

时间:2016-03-22 18:55:22

标签: c# asp.net-mvc quartz-scheduler

我在我的应用程序上运行了一些石英作业。一切都运行正常,我唯一想做的就是当我在本地机器上使用该应用程序时不运行作业。这意味着作业应该只在服务器上运行,并且只在我需要它时才在本地运行。

我知道可以有一个添加布尔常量的解决方案,如果这是真的比运行,否则作业将无法运行,但是如何以及在何处进行?

如果还有其他事情可以做到吗?

public class JobScheduler
    {
        public static void Start()
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

            scheduler.Start();

            IJobDetail offersRefreshJob = JobBuilder.Create<OffersRefreshJob>().Build();

            ITrigger triggerForOffersRefreshJob = TriggerBuilder.Create().WithDailyTimeIntervalSchedule
              (s =>
                 s.WithIntervalInMinutes(8)
                .OnEveryDay()
                .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
              )
            .Build();

        scheduler.ScheduleJob(offersRefreshJob, triggerForOffersRefreshJob);
    }
}

这是Global.asax.cs文件的代码。我使用了一个布尔RUN_JOBS变量,只有当RUN_JOBS为true时才调用start(),但它仍然在我的本地机器上运行作业。它是一个ASP.net MVC Web应用程序。

public class MvcApplication : System.Web.HttpApplication
    {
        public bool RUN_JOBS = true;
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            if (RUN_JOBS)
            {
                JobScheduler.Start();
            }            
        }
    }

1 个答案:

答案 0 :(得分:1)

由于您的代码在本地运行,我认为它处于Debug模式,当您部署到服务器时,它处于Release模式。

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);


        #if !DEBUG
            JobScheduler.Start();
        #endif            
    }
}