2016-03-22 15 views
1

Freunde,Stop Quarz Job auf dem lokalen Rechner

Ich habe einige Quarz-Jobs auf meiner Anwendung ausgeführt. Alles funktioniert einwandfrei. Ich möchte nur keine Jobs ausführen, wenn ich diese Anwendung auf meinem lokalen Computer verwende. Das bedeutet, dass Jobs nur auf dem Server ausgeführt werden sollten und nur dann auf dem lokalen Server ausgeführt werden sollten, wenn ich dies möchte.

Ich weiß, dass es eine Lösung geben kann, um eine boolesche Konstante hinzuzufügen, wenn das wahr ist, als laufen sonst Jobs nicht ausgeführt werden, aber wie und wo es zu tun?

Auch wenn es noch etwas anderes gibt?

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

Dies ist der Code der Datei Global.asax.cs. Ich habe eine boolesche RUN_JOBS-Variable verwendet und start() nur aufgerufen, wenn RUN_JOBS true ist, aber auf meinem lokalen Rechner werden immer noch Jobs ausgeführt. Es ist eine ASP.net MVC-Webanwendung.

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

Sie führen es lokal für Debugging-Zwecke? Können Sie Ihren Code für den Scheduler posten? – Seany84

+0

@ Seany84 Ich habe den Code meines Schedulers hinzugefügt, Ja, ich bin für Debugging-Zwecke ausgeführt, auch möchte ich nicht alle meine lokalen Daten aktualisieren, ich möchte Daten auf meine lokalen Daten aktualisieren, wenn ich brauche, nicht automatisch. Es gibt viele solche Jobs, ich habe nur einen Code gepostet. –

+0

1. Wo nennst du deine 'Start()' aus und kannst du diesen Code auch posten? 2. Wird Quartz in einer Konsolenanwendung oder einem Windows-Dienst ausgeführt? – Seany84

Antwort

1

Da Ihr Code lokal ausgeführt wird, gehe ich davon aus es in Debug Modus ist, und wenn Sie auf Ihrem Server bereitstellen ist es in Release Modus.

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

macht Sinn. Wird als eine Antwort nach der Überprüfung markiert. Vielen Dank für Ihre Zeit. :) –

+0

@ Seany84 In diesem Fall können wir #if! DEBUG #endif für alle ähnlichen Situationen in Visual Studio verwenden? –

+1

@binary Sie können es verwenden, wo immer Sie möchten, solange Sie 'Debug' lokal ausführen und' Release' Modus, wenn Sie auf Ihrem Server bereitstellen. – Seany84

Verwandte Themen