protected override void OnStart(string[] args) { _logger.Info("Starting service"); // Update the service state to Start Pending. ServiceStatus serviceStatus = new ServiceStatus(); serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING; serviceStatus.dwWaitHint = 100000; SetServiceStatus(this.ServiceHandle, ref serviceStatus); try { mgr = new Manager(); mgr.Initialize(); // Update the service state to Running. serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING; SetServiceStatus(this.ServiceHandle, ref serviceStatus); } catch (Exception e) { _logger.FatalException("Service failed to start", e); mgr.Stop(); // Stop the service ServiceController service = new ServiceController(SERVICE_NAME); service.Stop(); } }
private static extern bool SetServiceStatus(IntPtr handle, ref ServiceStatus serviceStatus);