Возникла необходимость установить в процессе задержку в несколько секунд. Первым делом использовали элемент Timer, но столкнулись с его зависанием. А учитывая, что очередь на Timer всё равно ограничена, то предлагаемые решения увеличить очередь вряд ли обеспечат 100% надежность выполнения.
Заменили Timer на Thread.Sleep. На средах разработки и тестирования всё прошло хорошо, но у клиента на средах и Sleep зависает, оставляя процессы в состоянии Running навсегда.
В чём может быть причина и как реализовать задержку, чтобы всё гарантировано работало?
Спасибо!
Нравится
Добрый день, Владимир.
Вероятнее всего дело все же в большой нагрузке на планировщик Quartz.
Рекомендуем пересмотреть дизайн бизнес-процессов с таймерами и там где возможно отказаться от их использования для уменьшения нагрузки.
Для того чтобы конкретные важные таймеры работали и не ждали своей очереди вы можете установить приоритет.
Детальнее об этом описано в статье на академии по настройке планировщика.
https://academy.terrasoft.ru/docs/developer/komponenty_prilozheniya/pla…
Добрый день, Владимир.
Вероятнее всего дело все же в большой нагрузке на планировщик Quartz.
Рекомендуем пересмотреть дизайн бизнес-процессов с таймерами и там где возможно отказаться от их использования для уменьшения нагрузки.
Для того чтобы конкретные важные таймеры работали и не ждали своей очереди вы можете установить приоритет.
Детальнее об этом описано в статье на академии по настройке планировщика.
https://academy.terrasoft.ru/docs/developer/komponenty_prilozheniya/pla…
Зубов Максим,
Очень хотелось бы от них отказаться, но для workaround'а другого бага, приходится ввести задержку в процессе, чтобы данные успели появиться.
А подскажите, как перезапустить Quartz, если в Process log уже есть висящие на таймере процессы?