2015-01-16 9 views
0

У нас есть служба Windows, написанная на C# (.Net3.5). При работе он работает отлично. Однако наши пользователи поддержки сообщают, что, хотя его всегда можно успешно запустить вручную, он не всегда будет автозагружаться при перезагрузке Windows.Почему служба Windows не автозапуск?

Полагаю, что это может быть связано с другими службами (на которых оно зависит), а не с самого начала, но, насколько я вижу, кроме своего собственного входа код службы не зависит ни от чего другого (вкладка свойств службы не содержит зависимостей). Также первой строкой метода OnStart является Thread.Sleep (60000), чтобы все другие службы имели возможность начать. Сервер - это Windows Server 2008 R1, поэтому, по моим расчетам, 60 секунд должно быть более чем достаточно.

Мои вопросы:

  1. Как я могу иметь четкое представление о его зависимости?
  2. Есть ли другие известные причины использования сервисов .Net, а не автозапуск?

ТИА

+0

Это может помочь вам в полной мере http://msdn.microsoft.com/en-us/library/ddhy0byf % 28v = VS.90% 29.aspx –

+0

Сон в OnStart - действительно плохая идея - поток, который вызывает OnStart, не принадлежит вам - вы должны начать все с самого начала и выходить из OnStart. Кроме того, вы не увидите ничего в зависимостях службы, если вы * не указали окна о ваших зависимостях. –

+0

Хорошо, возможно, это был плохая консультация (из другого вопроса/ответа на этом форуме). Но откуда я знаю, что такое «зависимости»? Код не имеет доступа к чему-либо другому входу в Sql Server (который может находиться на одном компьютере), и он не требует каких-либо других служб Windows, насколько я могу видеть. –

ответ

0

Настройка типа запуска службы Windows для "ServiceStartMode.Automatic" должно помочь.

serviceInstaller1.StartType = ServiceStartMode.Automatic; 

Эта строка кода сообщает операционной системе о запуске соответствующей службы Windows во время запуска системы. Кроме того, если автоматически запущенный сервис зависит от службы, запущенной вручную, служба запуска вручную также запускается автоматически при запуске системы. Так что вам не понадобится Thread.Sleep. Вы также можете посмотреть статью ниже о том, как назначить другие сервисные зависимости службе Windows: http://www.c-sharpcorner.com/UploadFile/0f68f2/adding-service-dependency-on-a-windows-service-through-regis/

+0

Спасибо, но он уже настроен на автоматический. Проблема в том, что он не всегда автоматически запускается. «... он не всегда будет автозапуск при перезагрузке Windows ...» –

Смежные вопросы