2016-03-22 23 views
1

Arkadaşlar,Yerel makinede Quartz İşini Durdurun

Uygulamamda bazı quartz işleri çalıştırıyorum. Her şey gayet iyi çalışıyor, yapmak istediğim tek şey, bu uygulamayı yerel makinemde kullandığımda işleri yürütmemek. Bu, işlerin yalnızca sunucuda çalışması ve yalnızca onları istediğimde yerel olarak çalıştırılması gerektiği anlamına gelir.

Boolean sabiti eklemek için bir çözüm olabileceğini biliyorum, aksi halde işler doğru değilse işler çalışmayacaktır, ancak nasıl ve nerede yapmalı?

Ayrıca yapılabilecek başka bir şey varsa?

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

Bu, Global.asax.cs dosyasının kodu. Bir boolean RUN_JOBS değişkeni kullandım ve RUN_JOBS doğruysa ancak (hala yerel makinemde işler devam ediyorsa) start() olarak adlandırdım. Bir ASP.net MVC web uygulamasıdır.

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

Hata ayıklama amacıyla yerel olarak çalışıyor musunuz? Kodunuzu programlayıcı için gönderir misiniz? – Seany84

+0

@ Seany84 Zamanlayıcımın kodunu ekledim, Evet Hata ayıklama amacıyla çalışıyorum, ayrıca tüm yerel verileri yenilemeyi istemiyorum, ihtiyacım olduğunda otomatik olarak veriyi yerel verilerimde yenilemek istiyorum. Birçok iş var, sadece bir tane kod yazdım. –

+0

1. 'Başlat()' ndan nereden geliyorsunuz ve bu kodu da gönderebilirsiniz? 2. Quartz bir konsol uygulamasında mı yoksa Windows servisinde mi çalışıyor? – Seany84

cevap

1

kodunuzu yerel aday olunca, ben Debug modunda olduğunu varsayalım ve sunucunuza dağıtmak ne zaman Release modunda.

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    
    } 
} 
+1

anlamında çağrılır. Doğruladıktan sonra cevap olarak işaretleyecektir. Zaman ayırdığın için teşekkürler. :) –

+0

@ Seany84 Bu durumda, Visual Studio'daki tüm benzer durumlar için #if! DEBUG #endif'i kullanabilir miyiz? –

+1

@binary Sunucunuza konuştuğunuzda 'Debug' yerel olarak ve' Release 'modunda çalıştırdığınız sürece istediğiniz her yerde kullanabilirsiniz. – Seany84

İlgili konular