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. |