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)
您可以使用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 不喜欢等待......