/// <summary> /// Occurs when a custom command is issued via the SCM /// </summary> /// <param name="command"></param> protected override void OnCustomCommand(int command) { try { ConfigLogger.Instance.LogDebug(String.Format("Received custom command: {0}", (EmailImportServiceCommand)command)); switch ((EmailImportServiceCommand)command) { case EmailImportServiceCommand.ReloadMailboxProfiles: try { // Pause the Imap Collector and Email Monitor if (collector != null) { collector.Pause(); } if (monitor != null) { monitor.Pause(); } // Wait for all in progress conversions to complete EmailConverter.WaitOnComplete(); // Refresh the Mailbox Profiles Settings.LoadMailboxProfiles(); } finally { // Resume the Imap Collector and Email Monitor if (collector != null) { collector.Resume(); } if (monitor != null) { monitor.Resume(); } } ConfigLogger.Instance.LogInfo("Mailbox Profiles Reloaded."); break; } } catch (Exception e) { ConfigLogger.Instance.LogError(e); } }
/// <summary> /// When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Specifies actions to take when a service stops running. /// </summary> protected override void OnStop() { if (collector != null) { collector.Dispose(); collector = null; } if (monitor != null) { monitor.Dispose(); monitor = null; } EmailConverter.WaitOnComplete(); ImageProcessingEngine.Complete(); ConfigLogger.Instance.LogInfo(String.Format("{0} Stopped.", GetServiceName())); }