break;

 case ServiceType.Win32OwnProcess:

  ServiceType += 'Win32 Service Process';

  break;

 case ServiceType.Win32ShareProcess;

  ServiceType += 'Win32 Shared Process';

  break;

 default:

  ServiceType += 'unknown type ' + type.ToString();

  break;

 }

 return ServiceType;

}

protected void SetServiceStatus(ServiceController controller) {

 buttonStart.Enabled = true;

 buttonStop.Enabled = true;

 buttonPause.Enabled = true;

 buttonContinue.Enabled = true;

 if (!controller.CanPauseAndContinue) {

  buttonPause.Enabled = false;

  buttonContinue.Enabled = false;

 }

 if (!controller.CanStop) {

  buttonStop.Enabled = false;

 }

 ServiceControllerStatus status = controller.Status;

 switch (status) {

 case ServiceControllerStatus.ContinuePending:

  textBoxServiceStatus.Text = 'Continue Pending';

  buttonContinue.Enabled = false;

  break;

 case ServiceControllerStatus.Paused;

  textBoxServiceStatus.Text = 'Paused';

  buttonPause.Enabled = false;

  buttonStart.Enabled = false;

  break;

 case ServiceControllerStatus.PausePending:

  textBoxServiceStatus.Text = 'Pause Pending';

  buttonPause.Enabled = false;

  buttonStart.Enabled = false;

  break;

 case ServiceControllerStatus.StartPending:

  textBoxServiceStatus.Text = 'Start Pending';

  buttonStart.Enabled = false;

  break;

 case ServiceControllerStatus.Running:

  textBoxServiceStatus.Text = 'Running';

  buttonStart.Enabled = false;

  buttonContinue.Enabled = false;

  break;

 case ServiceControllerStatus.Stopped:

  textBoxServiceStatus.Text = 'Stopped';

  buttonStop.Enabled = false;

  break;

 case ServiceControllerStatus.StopPending:

  textBoxServiceStatus.Text = 'StopPending';

  buttonStop.Enabled = false;

  break;

 default:

  textBoxServiceStatus.Text = 'Unknown status';

  break;

 }

}

protected void OnSelectedIndexChanged(object sender, System.EventArgs e) {

 ServiceController controller =

  (ServiceController)listBoxServices.SelectedItem;

 textBoxDisplayName.Text = controllerDisplayName;

 textBoxServiceType.Text =

  GetServiceTypeName(controller.ServiceType);

 textBoxServiceName.Text = controller.ServiceName;

 SetServiceStatus(controller);

}

Управление службой

С помощью класса ServiceController можно также посылать службе управляющие запросы.

Методы ServiceController
Start() Start() сообщает SCM, что служба должна быть запущена. В нашей служебной программе вызывается OnStart().
Stop() Stop() вызывает OnStop() в нашей служебной программе с помощью SCM, если свойство CanStop задано как true в классе службы
Pause() Pause() вызывает OnPause(), если свойство CanPauseAndContinue задано как true.
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату