2017-05-03 6 views
1

topshelfサービスを一時停止すると、Quartz.Netを停止または一時停止できますか?すべての例では、現在topshelfサービスをやるとQuartz.Netを停止または一時停止できますか?

、 - 登録がスタート/ストップ法の外にある:

factory.Service<IServiceHost>(sc => 
{ 
    sc.ConstructUsing(s => new ServiceHost()); 
    sc.WhenStarted((s, host) => s.Start(host)); 
    sc.WhenStopped(s => s.Stop()); 
    sc.WhenPaused(s => s.Pause()); 
    sc.WhenContinued(s => s.Continue()); 

    sc.ScheduleQuartzJob(...) 
} 
+0

'に対して話す何Scheduler.Shutdown() '? – Rabban

答えて

0

Program.csの

 HostFactory.Run(factory => 
     { 
      factory.UseNLog(); 
      factory.UseAutofacContainer(Container); 
      factory.Service<ServiceHost>(service => 
      { 
       service.ConstructUsingAutofacContainer(); 
       service.WhenStarted((sc, hc) => sc.Start(hc)); 
       service.WhenStopped((sc, hc) => 
       { 
        Container.Dispose(); 
        return sc.Stop(hc); 
       }); 

       service.ScheduleQuartzJob(cfg => JobConfigurator.GetConfigurationForJob<DataImportJob>(cfg, Settings.Default.RecurrentTimeout)); 

       factory.RunAsLocalSystem().StartAutomaticallyDelayed().EnableServiceRecovery(sr => 
      { 
       sr.OnCrashOnly(); 
       sr.RestartService(0); 
       sr.SetResetPeriod(1); 
      }).EnableShutdown(); 
     }); 

ServiceControl.cs:

public class ServiceHost : ServiceControl 
{ 
    private readonly IScheduler _scheduler; 

    public CdcServiceHost(IScheduler scheduler) 
    { 
     Ensure.Argument.NotNull(scheduler); 
     _scheduler = scheduler; 
    } 

    public bool Start(HostControl hostControl) 
    { 
     if (!_scheduler.IsStarted) 
     { 
      _scheduler.Start(); 
     } 

     Logger.Log.Debug("Service was started"); 
     return true; 
    } 

    public bool Stop(HostControl hostControl) 
    { 
     Logger.Log.Debug("Stopping scheduler"); 
     _scheduler.Shutdown(true); 

     Logger.Log.Debug("Service was stopped"); 
     return true; 
    } 
} 
関連する問題