Exemplo n.º 1
0
        private void myElapsedHandler(object source)
        {
            myServiceController = new ServiceController(myServiceController.ServiceName);
            Logger.Debug($"Ticked, Trigger Service {myTrigger.myController.ServiceName}, Status {myTrigger.myController.Status}");
            Logger.Info($"Ticked, Binding={IsBinding}, Trigger={myTrigger.IsTriggered()}");
            if (myEventMode == EventModeType.PERIODIC || (myEventMode == EventModeType.TRIGGER && IsBinding && myTrigger.IsTriggered()))
            {
                switch (myEventProcess)
                {
                case EventProcessType.START:
                    Logger.Debug($"Ticked, Target Service {myServiceController.ServiceName}, Status {myServiceController.Status}");
                    if (myServiceController.Status == ServiceControllerStatus.Stopped)
                    {
                        myServiceController.Start();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Running);
                        Logger.Debug($"Event ID[{myID}] - started service '{myServiceController.ServiceName}'");
                    }
                    else
                    {
                        Logger.Warn($"Event ID[{myID}] - failed to start service '{myServiceController.ServiceName}'");
                    }
                    break;

                case EventProcessType.STOP:
                    if (myServiceController.CanStop)
                    {
                        myServiceController.Stop();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Stopped);
                        Logger.Debug($"Event ID[{myID}] - stopped service '{myServiceController.ServiceName}'");
                    }
                    else
                    {
                        Logger.Warn($"Event ID[{myID}] - failed to stop service '{myServiceController.ServiceName}'");
                    }
                    break;

                case EventProcessType.PAUSE:
                    if (myServiceController.CanPauseAndContinue && myServiceController.Status == ServiceControllerStatus.Running)
                    {
                        myServiceController.Pause();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Paused);
                        Logger.Debug($"Event ID[{myID}] - paused service '{myServiceController.ServiceName}'");
                    }
                    else
                    {
                        Logger.Warn($"Event ID[{myID}] - failed to pause service '{myServiceController.ServiceName}'");
                    }
                    break;

                case EventProcessType.CONTINUE:
                    if (myServiceController.CanPauseAndContinue && myServiceController.Status == ServiceControllerStatus.Paused)
                    {
                        myServiceController.Continue();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Running);
                        Logger.Debug($"Event ID[{myID}] - continued service '{myServiceController.ServiceName}'");
                    }
                    else
                    {
                        Logger.Warn($"Event ID[{myID}] - failed to continue service '{myServiceController.ServiceName}'");
                    }
                    break;

                case EventProcessType.RESTART:
                    if (myServiceController.CanStop)
                    {
                        myServiceController.Stop();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Stopped);
                        myServiceController.Start();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Running);
                        Logger.Debug($"Event ID[{myID}] - restarted service '{myServiceController.ServiceName}'");
                    }
                    else
                    {
                        Logger.Warn($"Event ID[{myID}] - failed to restart service '{myServiceController.ServiceName}'");
                    }
                    break;

                case EventProcessType.TOGGLE:
                    if (myServiceController.Status == ServiceControllerStatus.Running)
                    {
                        myServiceController.Stop();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Stopped);
                        Logger.Debug($"Event ID[{myID}] - stopped service '{myServiceController.ServiceName}'");
                    }
                    else if (myServiceController.Status == ServiceControllerStatus.Stopped)
                    {
                        myServiceController.Start();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Running);
                        Logger.Debug($"Event ID[{myID}] - started service '{myServiceController.ServiceName}'");
                    }
                    else if (myServiceController.Status == ServiceControllerStatus.Paused)
                    {
                        myServiceController.Continue();
                        myServiceController.WaitForStatus(ServiceControllerStatus.Running);
                        Logger.Debug($"Event ID[{myID}] - continued service '{myServiceController.ServiceName}'");
                    }
                    else
                    {
                        Logger.Warn($"Event ID[{myID}] - failed to toggle service '{myServiceController.ServiceName}'");
                    }
                    break;
                }
            }

            GC.Collect();
        }