Чем может быть опасно использование System.Threading.Timer?
Решив добавить динамичности проекту задумался о реализации, прочёл о SignalR. Внедрил.
На бэкенде по запросу пользователя в отдельном потоке выполняется ряд действий.
Пользователю регулярно отсылаются данные о процессе. У пользователя обновляется его прогресс бар.
Нагружать лишний раз фронтенд не хотелось, я очень не люблю когда на пользователя даётся сильная нагрузка, в конце концов сколько javascript engine' ы жрут CPU и Memory...
Поток запускается с помощью класса System.Threading.Timer, с интервалом в 10 секунд.
Более точно в таймер я передаю процедуру в которой в зависимости от состояния объекта либо начинается запуск длительных манипуляций либо отсылаются данные пользователю через SignalR, либо если процесс завершён объекты удаляются как и сам таймер.
В принципе работает вроде вполне нормально, но я меня дурные предчувствия...
Более подробно с примерами кода смогу написать лишь вечером.
Дмитрий Гавриленко: Речь о том как часто создаются процессы обрабатываемые таймерами? Ну планируется что часто. Ряд пользователей работает с сайтом, скажем от 100-300 человек, и каждому пользователю регулярно надо выполнять его расчёты и получать результаты, так как расчёты бывают довольно долгими и ввёл прогресс бары.
Поэтому вообщем один из критерием в том что бы потоки вызывались из пула CLR потоков, так как в теории их будет довольно много, и работать они могут от пары секунд до десятка минут.