我想知道說我有一個正在執行的工作,並且它正在運行的Windows服務已被告知停止。我怎麼能延遲這一點,並等待所有的工作完成並quartz.net已關閉。如何檢查所有作業是否在關機前完成運行? - Quartz.net
我只看到像
scheduler.Shutdown();
和
scheduler.IsStarted
我想知道說我有一個正在執行的工作,並且它正在運行的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'答案中提到的關閉方法。