在本地机器上停止 Quartz 作业

Stop Quartz Job on local machine

朋友,

我正在 运行我的应用程序中进行一些 quartz 作业。一切正常,我唯一想做的就是在本地计算机上使用该应用程序时不要 运行 作业。这意味着作业应该只在服务器上 运行,只有在我需要时才在本地 运行。

我知道可以有一个解决方案来添加一个布尔常量,如果那是真的而不是 运行 否则工作不会 运行,但是如何以及在哪里做?

另外还有什么可以做的吗?

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 为真时才调用 start() ,但它仍然是我本地机器上的 运行ning 作业。它是一个 ASP.net MVC 网络应用程序。

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();
            }            
        }
    }

由于您的代码在本地 运行,我假设它处于 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            
    }
}