Я пытаюсь написать службу Windows, которая работает бесконечно.Windows-формы и фоновые программы для Linux не кажутся слишком плохими, но, возможно, я просто ужасно неумел в службах Windows.В отличие от некоторых других вопросов, связанных со сном или таймером, которые я здесь выкопал, время пробуждения или сна может быть регулярным интервалом, но не всегда таковым.Программа считывает некоторые файлы данных, которые могут дать ей команду изменить свое расписание, и это должно вступить в силу со следующего пробуждения.Он казался довольно простым, как консольная программа, и вел себя там отлично:
while (true)
{
// Calculate next time to run.
DateTime nextRun = NextWakeup();
TimeSpan nextTime = nextRun - DateTime.Now;
int sleepMs = (int)nextTime.TotalMilliseconds;
// Sleep until scheduled time
System.Threading.Thread.Sleep(sleepMs);
// Do a code cycle of more stuff here...
}
Однако, когда я пытаюсь запустить его как часть службы, чтобы он продолжал быть активным, пока пользователь вышел из системы,Service Manager упорно отказывается запустить его.Я получаю прекрасную ошибку 1053: «Служба не ответила на запрос запуска или управления своевременно».
Множество ответов на смежные вопросы здесь, кажется, предлагают использовать таймер любой ценой для сна.Если бы я сделал такую вещь вместо комбинации время / сон, как бы я изменил интервал таймера при каждом запуске?Или все это прекрасно, и я собираюсь неправильно настроить свой сервис?
Большое спасибо заранее!