2010-07-25 2 views
1

Я только что начал с Quartz.net, и у меня она работает как служба. Я создал Job и переместил полученный DLL в папку Quartz и добавил новую запись в файл jobs.xml, чтобы запускать его каждые 3 секунды.Обновление DLL вакансии Quartz.NET без перезагрузки службы

Я обновил работу .dll, но он используется кварцем (или заблокирован).

Возможно ли обновить .dll без перезапуска службы кварца? Если бы не то, что могло бы случиться с длительной работой, если бы я остановил/запустил услугу Quartz?

ответ

3

Вы не можете обновить dll задания без перезапуска службы. После запуска сервера он загружает DLL задания и загруженные типы остаются в памяти. Так работает среда выполнения .NET. Чтобы добиться чего-то вроде динамической перезагрузки, вам нужно будет использовать программно созданные домены приложений и т. Д.

Если вы остановите планировщик, вы можете передать параметр bool, ждать ли ждать завершения работ в первую очередь. Тогда вы будете в безопасности с завершением работы, и никакие новые не появятся, пока планировщик отключится.

+0

Не могли бы вы рассказать мне, что это за параметр или ссылка для документирования этого, с надеждой на пример? –

+0

Это метод Shutdown в IScheduler: http://quartznet.sourceforge.net/apidoc/topic93.html. Он будет блокироваться до завершения работы, и вы сможете завершить процесс. Особенно, если вы используете стойкость базы данных для обработки осечек. –

Смежные вопросы