Служба не может быть запущена, но запускается? - PullRequest
6 голосов
/ 10 мая 2011

Я написал небольшую службу Windows, которую хочу запускать ежедневно на Windows Server 2008. Служба написана на C #.

  • Код отлично работает в обычном Форма Windows.
  • Служба работает так, как должна, когда я запускаю и останавливаю ее из окна «Управление службами» (services.msc).

Но при запуске в командной строке с:

net start Service1

Я получаю следующее:

The Service1 service is starting........  The Service1 service could not be started.

The service did not report an error.

More help is available by typing NET HELP:SG 3534.

Странно то, что служба все еще работает, на экране «Службы» я по-прежнему вижу, что она запускается до тех пор, пока она полностью не запустится. Когда я пытаюсь остановить сервис, я получаю:

The service could not be controlled in its present state.

More help is available by typing NET HELPMSG 2189

А затем служба останавливается. Есть ли способ решить это? Мне уже удалось без проблем отладить сервис, код работает. Но во время отладки то же самое все еще происходит в командной консоли, а я все еще могу отлаживать дальше.

Это похоже на то, что у метода onStart () есть какой-то тайм-аут ... Понятия не имею ... Я довольно новичок в Windows Services (это мой первый). Я пишу весь свой код в методе onStart (), возможно, это не самая лучшая идея, но я не знаю, где еще его набирать.

Если бы кто-то мог помочь, я был бы очень благодарен.

1 Ответ

5 голосов
/ 10 мая 2011

Событие OnStart используется для запуска фонового потока, который позаботится об обработке.Если метод OnStart завершается без ошибок, диспетчер служб предполагает, что служба запущена успешно.Таким образом, OnStart должен вернуться как можно скорее.

Затем метод OnStop используется для остановки фоновой обработки.Успешный OnStop сообщает диспетчеру службы, что служба была закрыта без ошибок.

...