Fires when the status of the Windows Service changes.
protected virtual void OnStatusChanged(
ServiceStatusEventArgs e
)
e
The event data
using Leadtools.Dicom.AddIn;
using Leadtools.Dicom.AddIn.Common;
using Leadtools.Dicom.Server.Admin;
public static class ExtendedServiceControllerExample
{
static AutoResetEvent statusChangedEvent = new AutoResetEvent(false);
static ServiceControllerStatus desiredStatus = ServiceControllerStatus.Stopped;
public static void StartService(ExtendedServiceController controller)
{
if (controller.Status != System.ServiceProcess.ServiceControllerStatus.Running)
{
desiredStatus = ServiceControllerStatus.Running;
statusChangedEvent.Reset();
controller.Start();
statusChangedEvent.WaitOne();
}
}
public static void StopService(ExtendedServiceController controller)
{
if (controller.Status != System.ServiceProcess.ServiceControllerStatus.Stopped)
{
desiredStatus = ServiceControllerStatus.Stopped;
statusChangedEvent.Reset();
controller.Stop();
statusChangedEvent.WaitOne();
}
}
public static void ExtendedServiceControllerSample()
{
ExtendedServiceController controller = new ExtendedServiceController("L22_PACS_SCP64");
controller.StatusChanged += Controller_StatusChanged;
StartService(controller);
StopService(controller);
StartService(controller);
StopService(controller);
}
private static void Controller_StatusChanged(object sender, ServiceStatusEventArgs e)
{
ExtendedServiceController controller = sender as ExtendedServiceController;
if (controller != null)
{
try
{
Console.WriteLine($"Status Changed: {e.Status}");
}
finally
{
if (controller.Status == desiredStatus)
{
statusChangedEvent.Set();
}
}
}
}
}
ExtendedServiceController Class