Если вы запускаете фоновый поток с ThreadPool.QueueUserWorkItem, я думаю, что вы могли бы иметь Thread.Sleep там, и когда вы закрываете сервис, вам не нужно ничего делать с ним.Я думаю, что Timer Tick будет автоматически создавать потоки для вас, когда он тикает, так что вам придется делать еще меньше, если вы используете это (из двух таймер будет, я думаю, соответствует тому, что вы хотите достичь лучше, так будетлучший выбор).
Это определенно похоже на то, что было бы лучше сделать планировщиком, как вы говорите.Я не знаю, можете ли вы сделать это непосредственно в InstallShield, но, возможно, вы могли бы создать небольшое консольное приложение, которое вы запускаете из установщика, которое на основе аргумента командной строки либо обращается к API расписания задач Windows - http://msdn.microsoft.com/enus/library/windows/desktop/aa383614(v=vs.85).aspxзарегистрировать себя или выполнить задание, которое вы хотите достичь (т.е. -install - установить его в расписании, ни один аргумент не будет делать то, что вам нужно, один раз в день).
Я думаю, что это C ++API, так что вы можете сделать немного p / invoke или, лучше, просто иметь некоторый управляемый C ++ в классе libaray и ссылаться на него из консольного приложения на основе ac #.