如何在关闭前检查所有作业是否运行完毕?- 石英网

cho*_*bo2 2 c# windows-services quartz.net

我想知道我有一项正在执行的作业,并且它运行的 Windows 服务已被告知停止。我怎样才能延迟这个并等到所有作业完成并且quartz.net 关闭。

我只看到像

 scheduler.Shutdown();
Run Code Online (Sandbox Code Playgroud)

scheduler.IsStarted
Run Code Online (Sandbox Code Playgroud)

And*_*eas 5

您可以使用API-Doc

public virtual void Shutdown( 
  bool waitForJobsToComplete
)
Run Code Online (Sandbox Code Playgroud)

这告诉 Quartz.Net 等待所有作业完成,或者API-Doc

virtual IList GetCurrentlyExecutingJobs()
Run Code Online (Sandbox Code Playgroud)

此外,您应该要求操作系统等待您的服务MSDN

[ComVisibleAttribute(false)]
public void RequestAdditionalTime(
int milliseconds
)
Run Code Online (Sandbox Code Playgroud)

否则 Windows 将在 20 秒后终止您的服务(取决于您的系统设置)Source

为了防止服务停止关闭,SCM 只会等待您的服务自行停止。此限制的默认值为 20 秒(该值位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control 的注册表项 WaitToKillServiceTimeout() 中)

啊,别忘了系统关闭,Windows 不喜欢等待......