如何检查所有作业是否在关机前完成运行? - 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'答案中提到的关闭方法。