Ошибка при остановке службы Windows - PullRequest
10 голосов
/ 04 мая 2011

Я работаю в Windows Service. Работает нормально. Когда я пытаюсь остановить службу с services.msc, она выдает следующую ошибку:

Windows не удалось остановить службу xxx на локальном компьютере. Служба не вернула ошибку. Это может быть внутренняя ошибка Windows или внутренняя ошибка службы. Если проблема сохраняется, обратитесь к системному администратору.

Если я пытаюсь остановить это снова, это занимает много времени, а затем выдает ошибку, как показано ниже:

Windows не удалось остановить службу xxx на локальном компьютере. Ошибка 1061: в данный момент служба не может принимать управляющие сообщения.

На этом этапе служба остановлена. Но если я попытаюсь переустановить службу, она выдаст еще одну ошибку:

Windows не удалось остановить службу xxx на локальном компьютере.
Ошибка 1001: указанная служба помечена для удаления.

После закрытия services.msc он позволяет переустановить службу, и снова все начинает работать нормально.

В OnStop() я выполняю некоторые длительные операции, и для этого требуется время.

Есть идеи, как мне все сделать гладко?

- Edit -

Вот как выглядит мой OnStop метод:

protected override void OnStop()
{
    base.OnStop();
    //Some lengthy operation      
}

Ответы [ 2 ]

14 голосов
/ 05 мая 2011

Служба windows имеет время ожидания по умолчанию в событиях onstart и onstop.Обычно, если вы выполняете длительные операции в любом из этих событий запускаете новый поток и позволяете операции выполняться в фоновом режиме .

Обычно OnStartа также события OnStop в службе Windows используются для запуска процесса, и процесс, отнимающий много времени, будет выполнять его в дочернем потоке .

Надеюсь, это решит вашу проблему ..

2 голосов
/ 04 мая 2011

Существует запись в реестре, которая контролирует, сколько временных окон дает службам отключиться, прежде чем отказаться: http://support.microsoft.com/kb/146092

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...