private void Dispose(bool disposing) { if (!disposed) { idleTimer.Dispose(); Delegate[] delegateBuffer = null; if (IdleEntered != null) { delegateBuffer = IdleEntered.GetInvocationList(); foreach (EventHandler del in delegateBuffer) { IdleEntered -= del; } IdleEntered = null; } if (IdleStoped != null) { delegateBuffer = IdleStoped.GetInvocationList(); foreach (EventHandler del in delegateBuffer) { IdleStoped -= del; } IdleStoped = null; } if (!hooksRemoved) { RemoveHooks(); } disposed = true; } }
private void CheckIdleState(object sender) { syncContext.Invoke(s => { var idleTimeSpan = IdleTimeWatcher.GetIdleTimeSpan(); if (idleTimeSpan >= TimeSpan.FromMilliseconds(settingsService.Settings.IdleTimer)) { idleEntered = true; idleTimer.Change(Timeout.Infinite, Timeout.Infinite); SetHooks(); IdleEntered.InvokeSafely(this, EventArgs.Empty); } }); }