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;
}
}
'에 대해 말하는 무엇 Scheduler.Shutdown()'? – Rabban