Наличие пустого блока catch для перехвата всех исключений редко является хорошей идеей, поскольку серьезные проблемы легко исчезают.
Измените свой код, чтобы хотя бы выполнить некоторую регистрацию в блоке catch, например,
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.ToString());
}
Затем вы можете присоединить прослушиватель трассировки в конструкторе вашей службы или использовать инструмент DebugView из Sysinternals для чтения сообщения трассировки. Если вы хотите сделать еще один шаг вперед, вы можете включить в свой проект библиотеку журналов, например log4net.
Полагаю, вы получаете TimeoutException
, потому что остановка службы занимает больше времени, чем вы ожидали. Вы пытались увеличить время ожидания или бесконечно ждать, удалив параметр времени ожидания?
Обновление:
Возможно, вам необходимо проверить, запущена ваша служба или нет:
if (!(service.Status.Equals(ServiceControllerStatus.Stopped)
|| service.Status.Equals(ServiceControllerStatus.StopPending)))
{
service.Stop();
}
service.Start();