【发布时间】:2015-08-13 09:37:50
【问题描述】:
我使用 TopShelf 构建 windows 服务和 TopShelf.Quartz 包。 是否可以从 IJob 的 Execute 方法关闭整个服务?现在我能做的就是删除工作。例如,如果我在工作中发现特定异常,我想创建日志和关闭服务。
感谢您的任何回答。
public class Program
{
public static void Main()
{
HostFactory.Run(c =>
{
// Topshelf.Ninject (Optional) - Initiates Ninject and consumes Modules
c.UseNinject(new SampleModule());
c.Service<SampleService>(s =>
{
//Topshelf.Ninject (Optional) - Construct service using Ninject
s.ConstructUsingNinject();
s.WhenStarted((service, control) => service.Start());
s.WhenStopped((service, control) => service.Stop());
// Topshelf.Quartz.Ninject (Optional) - Construct IJob instance with Ninject
s.UseQuartzNinject();
// Schedule a job to run in the background every 5 seconds.
// The full Quartz Builder framework is available here.
s.ScheduleQuartzJob(q =>
q.WithJob(() =>
JobBuilder.Create<SampleJob>().Build())
.AddTrigger(() =>
TriggerBuilder.Create()
.WithSimpleSchedule(builder => builder
.WithIntervalInSeconds(5)
.RepeatForever())
.Build())
);
});
});
}
}
public class SampleJob : IJob
{
public void Execute(IJobExecutionContext context)
{
//Here I want catch exception and shoutdown service
}
}
【问题讨论】:
标签: c# windows-services quartz.net topshelf