Сценарий
Я создал службу Windows, но всякий раз, когда я запускаю ее, она немедленно останавливается. Служба получена из консольного приложения, которое подписывалось на событие и отслеживало процессы на сервере. Если что-то случится с процессом (то есть оно было убито), то событие вызовет перезапуск процесса. Причина, по которой я вам это говорю, заключается в том, что оригинальный код выглядел так:
Оригинальный код консольного приложения:
static void Main(string[] args)
{
StartProcess sp = new StartProcess();
//Note the readline that means the application sits here waiting for an event!
Console.ReadLine();
}
Теперь, когда этот код превратился в Службу Windows, он по сути ТОТ ТО ЖЕ. Однако служба не ждет, даже с readline, она просто заканчивается .....
Новый код обслуживания Windows:
protected override void OnStart(string[] args)
{
ProcessMonitor pm = new ProcessMonitor();
Console.ReadLine();
}
Мысли
Поскольку функциональность полностью заключена в этом единственном классе (он буквально запускается, настраивает некоторые события и ожидает) - Как я могу заставить службу фактически сидеть там и просто ждать? Кажется, игнорирует readline. Однако это прекрасно работает как консольное приложение, гораздо удобнее иметь его в качестве службы.