Как проверить, все ли задания завершены до выключения? - Quartz.net - PullRequest
1 голос
/ 18 августа 2011

Мне интересно, скажем, у меня есть работа, которая выполняется, и служба Windows, в которой она запущена, была остановлена.Как я могу отложить это и подождать, пока все задания не будут завершены, и quartz.net отключится.

Я вижу только как

 scheduler.Shutdown();

и

scheduler.IsStarted

Ответы [ 2 ]

3 голосов
/ 18 августа 2011

Вы можете использовать API-Doc

public virtual void Shutdown( 
  bool waitForJobsToComplete
)

, чтобы Quartz.Net ждать завершения всех заданий, или API-Doc

virtual IList GetCurrentlyExecutingJobs()

Кроме того, вы должны попросить ОС дождаться вашего сервиса MSDN :

[ComVisibleAttribute(false)]
public void RequestAdditionalTime(
int milliseconds
)

в противном случае Windows отключит ваш сервис через 20 секунд (в зависимости от настроек вашей системы) Источник .

Чтобы предотвратить остановку службы, SCM будет ждать до тех пор, пока ваша служба не остановится сама.По умолчанию этот предел составляет 20 секунд (это значение находится в разделе реестра WaitToKillServiceTimeout () в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control)

Ааа, и не забудьте о выключении системы, окнане любит ждать ...

0 голосов
/ 29 августа 2011

Если вы используете / установили службу, поставляемую с дистрибутивом, по умолчанию планировщик будет ожидать завершения всех заданий. Вам не нужно ничего делать. Если вы написали свою собственную служебную оболочку, используйте метод Shutdown, упомянутый в ответе @Andreas.

...