Вопрос

Зависание процессов на timer и sleep

Возникла необходимость установить в процессе задержку в несколько секунд. Первым делом использовали элемент Timer, но столкнулись с его зависанием. А учитывая, что очередь на Timer всё равно ограничена, то предлагаемые решения увеличить очередь вряд ли обеспечат 100% надежность выполнения.

 

Заменили Timer на Thread.Sleep. На средах разработки и тестирования всё прошло хорошо, но у клиента на средах и Sleep зависает, оставляя процессы в состоянии Running навсегда.



В чём может быть причина и как реализовать задержку, чтобы всё гарантировано работало?



Спасибо!

Нравится

2 комментария
Лучший ответ

Добрый день, Владимир.

Вероятнее всего дело все же в большой нагрузке на планировщик Quartz.

Рекомендуем пересмотреть  дизайн бизнес-процессов с таймерами и там где возможно отказаться от их использования для уменьшения нагрузки.

Для того чтобы конкретные важные таймеры работали и не ждали своей очереди вы можете установить приоритет.

Детальнее об этом описано в статье на академии по настройке планировщика.

https://academy.terrasoft.ru/docs/developer/komponenty_prilozheniya/pla…

Добрый день, Владимир.

Вероятнее всего дело все же в большой нагрузке на планировщик Quartz.

Рекомендуем пересмотреть  дизайн бизнес-процессов с таймерами и там где возможно отказаться от их использования для уменьшения нагрузки.

Для того чтобы конкретные важные таймеры работали и не ждали своей очереди вы можете установить приоритет.

Детальнее об этом описано в статье на академии по настройке планировщика.

https://academy.terrasoft.ru/docs/developer/komponenty_prilozheniya/pla…

Зубов Максим,

Очень хотелось бы от них отказаться, но для workaround'а другого бага, приходится ввести задержку в процессе, чтобы данные успели появиться.



А подскажите, как перезапустить Quartz, если в Process log уже есть висящие на таймере процессы?

Показать все комментарии