Запланированные задачи Windows были достаточно надежными для наших целей, и мы предпочитаем их почти во всех случаях по сравнению со службами Windows из-за их простоты установки и расширенных функций восстановления. Постоянная природа службы Windows может в конечном итоге стать проблемой, если часть написанного кода окажется заблокированной или зацикленной на фрагменте кода, которого не должно быть. Обычно мы пишем наш код в мода похожа на это
Init();
Run();
CleanUp();
Затем в рамках запланированной задачи мы устанавливаем ограничение по времени, в течение которого процесс может выполняться, и убивают его, если он выполняется дольше. Если у нас есть кусок кода, который испытывает проблемы, Запланированные Задачи убьют его, и процесс запустится в следующую минуту.