如何为长时间运行的作业停止Windows服务?

时间:2013-04-21 17:03:18

标签: c# quartz-scheduler

目前我正在使用Windows服务继续在后台运行一些作业。这些工作是通过Quartz.Net安排的。通常这些是长期工作,跨度从5分钟到15分钟。如果作业当前正在运行,并且用户将尝试关闭Windows服务,则会抛出异常: Windows服务未及时响应。

实际上是WindowsService的OnShutdown()方法,我也试图关闭Quartz.Net。 我正在调用 scheduler.Shutdown(true)来停止调度程序&等待工作。如果我将此设置为False,则Windows Service会正常停止,但它会使正在运行的Job处于Unstable状态。请帮帮我。

1 个答案:

答案 0 :(得分:6)

您收到此错误是因为您的服务未在约定的时间内完成停止。因此,SCM假定它以某种方式挂起并中止它。

要告诉SCM您需要更多时间来完成操作,请在ServiceBase.RequestAdditionalTime()处理程序中调用OnStop。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.requestadditionaltime.aspx