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

本文关键字:Windows 服务 作业 长时间 运行 | 更新日期: 2023-09-27 18:10:18

目前我正在使用Windows Service来保持在后台运行一些作业。这些作业是通过Quartz.Net调度的。通常这些是长时间运行的作业,跨度从5分钟到15分钟。如果一个作业当前正在运行,如果用户将尝试关闭Windows服务,那么它抛出异常:Windows服务没有及时响应。

实际上OnShutdown()方法的WindowsService,我试图关闭石英。净也。我正在调用scheduler. shutdown (true)来停止调度器&等待正在运行的作业。如果我将此设置为False,则Windows服务正常停止,但它会将正在运行的作业置于不稳定状态。

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

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

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