/// <summary> /// Stop the service, dispose of all resources /// </summary> public void Dispose() { if (!IsRunning) { return; } try { cycleLock.WaitAsync().Sync(); IsRunning = false; GetUrl(UrlType.Stop).Sync(); cycleTimer?.Dispose(); IPBanDelegate?.Dispose(); IPBanDelegate = null; lock (updaters) { foreach (IUpdater updater in updaters.ToArray()) { updater.Dispose(); } updaters.Clear(); } ipDB?.Dispose(); Logger.Warn("Stopped IPBan service"); } finally { stopEvent.Release(); } }
/// <summary> /// Stop the service, dispose of all resources /// </summary> public void Dispose() { if (!IsRunning) { return; } IsRunning = false; try { serviceCancelTokenSource.Cancel(); GetUrl(UrlType.Stop).Sync(); cycleTimer?.Dispose(); IPBanDelegate?.Dispose(); IPBanDelegate = null; lock (updaters) { foreach (IUpdater updater in updaters.ToArray()) { updater.Dispose(); } updaters.Clear(); } foreach (LogFileScanner file in logFilesToParse) { file.Dispose(); } ipDB?.Dispose(); Logger.Warn("Stopped IPBan service"); } finally { stopEvent.Release(); } }
/// <summary> /// Stop the service, dispose of all resources /// </summary> public void Dispose() { if (!IsRunning) { return; } IsRunning = false; try { firewallQueueCancel.Cancel(); GetUrl(UrlType.Stop).Sync(); cycleTimer?.Dispose(); IPBanDelegate?.Dispose(); IPBanDelegate = null; lock (updaters) { foreach (IUpdater updater in updaters.ToArray()) { updater.Dispose(); } updaters.Clear(); } foreach (IPBanLogFileScanner file in logFilesToParse) { file.Dispose(); } ipDB?.Dispose(); IPBanLog.Warn("Stopped IPBan service"); } catch { } stopEvent.Set(); }