如何检查所有作业是否在关机前完成运行? - Quartz.net
问题描述:
我想知道说我有一个正在执行的工作,并且它正在运行的Windows服务已被告知停止。我怎么能延迟这一点,并等待所有的工作完成并quartz.net已关闭。如何检查所有作业是否在关机前完成运行? - Quartz.net
我只看到像
scheduler.Shutdown();
和
scheduler.IsStarted
答
您可以使用API-Doc
public virtual void Shutdown(
bool waitForJobsToComplete
)
这告诉Quartz.Net等到所有的工作都完成后,或API-Doc
virtual IList GetCurrentlyExecutingJobs()
此外,你应该问操作系统等待为您服务MSDN:
[ComVisibleAttribute(false)]
public void RequestAdditionalTime(
int milliseconds
)
否则将视窗(取决于您的系统设置)Source杀20秒后您的服务。
为防止服务停止关闭,SCM只会等待服务停止自身的限制。此限制的默认为20秒(此值在HKEY_LOCAL_MACHINE \ SYSTEM注册表键值WaitToKillServiceTimeout的()\ CURRENTCONTROLSET \控制)
啊,不要忘了关闭系统,窗户不喜欢等待...
答
如果您使用/安装了分发附带的服务,默认情况下,调度程序将等待,直到所有作业完成执行。你不必做任何事情。如果您编写自己的服务包装,请使用@Andreas'答案中提到的关闭方法。