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

У меня есть служба Windows.В методе OnStart я выполняю некоторую операцию, и если одна из операций завершается ошибкой, я хочу, чтобы служба остановилась.В блоке Catch я пишу нижеупомянутый код:

var srvc = new System.ServiceProcess.ServiceController("Scv1", "localhost");
srvc.Stop();
srvc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped);

Это хорошо работает, но Windows показывает мне окно сообщения:

---------------------------
Services
---------------------------
The xxx service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.
---------------------------
OK   
---------------------------

Я что-то здесь не так делаю?Как подавить окно сообщения?

Ответы [ 2 ]

0 голосов
/ 11 марта 2015

Вы действительно можете проверить обработчик событий. Он сообщит вам об ошибке, которую вы сделали в файле конфигурации. Некоторая синтаксическая ошибка в файле конфигурации будет причиной появления такого сообщения.

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

Я создал базовый тестовый сервис в C #, установил его в Windows 7, а затем попытался запустить.

using System.ServiceProcess;

public class MyService : ServiceBase
{
  static void Main()
  {
    System.ServiceProcess.ServiceBase.Run( new MyService() );
  }

  protected override void OnStart( string[] args )
  {
    bool failed = true;
    // Do stuff...
    // Oops, we failed! Time to stop!
    if( failed ) {
      base.Stop();
      return;
    }
    base.OnStart( args );
  }
}

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

net start Scv1

Тогда вы увидите текстовое сообщение об ошибке вместо окна сообщения.

В любом случае вызапускается программа, которая просит SCM запустить ваш сервис.Ваш сервис не запустился.Эта ошибка сообщается программе.Программа решила отобразить сообщение об ошибке для информирования пользователя.Это вне вашего контроля.

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