Я создаю службу Windows, и после установки службы она останавливается и запускается немедленно, но это не должно происходить вообще. Ранее я получал сообщения о том, что служба не отвечала на команду запуска своевременно, поэтому я вынул код инициализации и поместил его в поток, и теперь я нахожусь здесь:
protected override void OnStart(string[] args)
{
this.EventLog.WriteEntry("ATNotifier Started");
ThreadPool.QueueUserWorkItem(WaitOnEmailsChanged);
ThreadPool.QueueUserWorkItem(Init, "IP");
}
Поток waitonemailschange просто создает наблюдатель файловой системы, который следит за изменением файла настроек (xml-документ), и загружает данные из этого файла, если это происходит. В настоящее время это просто ожидает неопределенно долго (что является общим случаем, поскольку это будет изменяться только несколько раз в год), так как в xml-документ не вносятся никакие изменения.
Поток Init выполняет все виды операций, включая создание и запуск объекта System.Timers.Timer, метод Elapsed которого является основой службы.
Я не могу понять, почему это началось, а затем сразу остановилось. Следует также отметить, что средство просмотра событий не показывает журналы из этого приложения.
edit> Я попытался создать «правильные» темы с теми же результатами, и я удалил все, кроме создания и запуска таймера, вот так:
protected override void OnStart(string[] args)
{
this.EventLog.WriteEntry("ATNotifier Started");
m_Timer = new System.Timers.Timer(90000.0); // 1.5 mins
m_Timer.Elapsed += new ElapsedEventHandler(m_Timer_Elapsed);
m_Timer.Start();
}
и я все еще получаю то же сообщение. Как будто OnStart никогда не вызывается.