/// <summary> /// Window closing method. Disposes of the notify icon, removes the custom window procedure and releases user preference change handlers. /// </summary> /// <param name="sender">The sender of the message.</param> /// <param name="e">Cancel event arguments.</param> private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { eventWatcher.Dispose(); // remove the notify icon this.NotifyIcon.Visible = false; this.NotifyIcon.Dispose(); if (this.IsLoaded) { HwndSource source = PresentationSource.FromVisual(this) as HwndSource; source.RemoveHook(this.WndProc); } this.ReleaseHandlers(); }