Dispose tray icon when application is exited

This commit is contained in:
Mark McDowall 2013-08-06 00:13:26 -07:00
parent 4fc4cc51fc
commit 823d7c539c
1 changed files with 28 additions and 0 deletions

View File

@ -1,6 +1,8 @@
using System; using System;
using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Reflection; using System.Reflection;
using System.Threading;
using System.Windows.Forms; using System.Windows.Forms;
using NzbDrone.Common; using NzbDrone.Common;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
@ -30,6 +32,9 @@ namespace NzbDrone.SysTray
public void Start() public void Start()
{ {
Application.ThreadException += new ThreadExceptionEventHandler(OnThreadException);
Application.ApplicationExit += new EventHandler(OnApplicationExit);
_trayMenu.MenuItems.Add("Launch Browser", LaunchBrowser); _trayMenu.MenuItems.Add("Launch Browser", LaunchBrowser);
_trayMenu.MenuItems.Add("-"); _trayMenu.MenuItems.Add("-");
_trayMenu.MenuItems.Add("Exit", OnExit); _trayMenu.MenuItems.Add("Exit", OnExit);
@ -44,6 +49,11 @@ namespace NzbDrone.SysTray
Application.Run(this); Application.Run(this);
} }
protected override void OnClosing(CancelEventArgs e)
{
DisposeTrayIcon();
}
protected override void OnClosed(EventArgs e) protected override void OnClosed(EventArgs e)
{ {
Console.WriteLine("Closing"); Console.WriteLine("Closing");
@ -77,5 +87,23 @@ namespace NzbDrone.SysTray
{ {
_processProvider.Start(_hostController.AppUrl); _processProvider.Start(_hostController.AppUrl);
} }
private void OnApplicationExit(object sender, EventArgs e)
{
DisposeTrayIcon();
}
private void OnThreadException(object sender, EventArgs e)
{
DisposeTrayIcon();
}
private void DisposeTrayIcon()
{
_trayIcon.Visible = false;
_trayIcon.Icon = null;
_trayIcon.Visible = false;
_trayIcon.Dispose();
}
} }
} }