aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoftworkz <softworkz@hotmail.com>2016-07-30 01:44:14 +0200
committersoftworkz <softworkz@hotmail.com>2016-07-30 01:45:20 +0200
commitf7c3ee1c6800d98ab1f71a7807a962c682254625 (patch)
tree7ba3a902bf5fd1c4540467ea75f94485a719af79
parent74f511b2ee0dee5c8c5245e4c3d77c17daf67eb8 (diff)
Fix: Emby notification icon remained visible after shutdown
Also implemented the recommended pattern for IDisposable.
-rw-r--r--MediaBrowser.ServerApplication/MainStartup.cs6
-rw-r--r--MediaBrowser.ServerApplication/ServerNotifyIcon.cs65
2 files changed, 24 insertions, 47 deletions
diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs
index bdfd7d1bb..aba4952f3 100644
--- a/MediaBrowser.ServerApplication/MainStartup.cs
+++ b/MediaBrowser.ServerApplication/MainStartup.cs
@@ -619,6 +619,12 @@ namespace MediaBrowser.ServerApplication
private static void ShutdownWindowsApplication()
{
+ if (_serverNotifyIcon != null)
+ {
+ _serverNotifyIcon.Dispose();
+ _serverNotifyIcon = null;
+ }
+
//_logger.Info("Calling Application.Exit");
//Application.Exit();
diff --git a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs
index 27816db5a..d04128a18 100644
--- a/MediaBrowser.ServerApplication/ServerNotifyIcon.cs
+++ b/MediaBrowser.ServerApplication/ServerNotifyIcon.cs
@@ -4,14 +4,13 @@ using MediaBrowser.Controller.Localization;
using MediaBrowser.Model.Logging;
using MediaBrowser.Server.Startup.Common.Browser;
using System;
+using System.ComponentModel;
using System.Windows.Forms;
namespace MediaBrowser.ServerApplication
{
public class ServerNotifyIcon : IDisposable
{
- bool IsDisposing = false;
-
private NotifyIcon notifyIcon1;
private ContextMenuStrip contextMenuStrip1;
private ToolStripMenuItem cmdExit;
@@ -21,25 +20,13 @@ namespace MediaBrowser.ServerApplication
private ToolStripMenuItem cmdRestart;
private ToolStripSeparator toolStripSeparator1;
private ToolStripMenuItem cmdCommunity;
+ private Container components;
private readonly ILogger _logger;
private readonly IServerApplicationHost _appHost;
private readonly IServerConfigurationManager _configurationManager;
private readonly ILocalizationManager _localization;
- public bool Visible
- {
- get
- {
- return notifyIcon1.Visible;
- }
- set
- {
- Action act = () => notifyIcon1.Visible = false;
- Invoke(act);
- }
- }
-
public void Invoke(Action action)
{
contextMenuStrip1.Invoke(action);
@@ -55,7 +42,7 @@ namespace MediaBrowser.ServerApplication
_appHost = appHost;
_configurationManager = configurationManager;
- var components = new System.ComponentModel.Container();
+ components = new System.ComponentModel.Container();
var resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
contextMenuStrip1 = new ContextMenuStrip(components);
@@ -138,32 +125,6 @@ namespace MediaBrowser.ServerApplication
LocalizeText();
notifyIcon1.DoubleClick += notifyIcon1_DoubleClick;
- Application.ThreadExit += Application_ThreadExit;
- Application.ApplicationExit += Application_ApplicationExit;
- }
-
- void Application_ThreadExit(object sender, EventArgs e)
- {
- try
- {
- notifyIcon1.Visible = false;
- }
- catch
- {
-
- }
- }
-
- void Application_ApplicationExit(object sender, EventArgs e)
- {
- try
- {
- notifyIcon1.Visible = false;
- }
- catch
- {
-
- }
}
void notifyIcon1_DoubleClick(object sender, EventArgs e)
@@ -222,16 +183,26 @@ namespace MediaBrowser.ServerApplication
_appHost.Shutdown();
}
- ~ServerNotifyIcon()
+ public void Dispose()
{
- Dispose();
+ Dispose(true);
}
- public void Dispose()
+ protected virtual void Dispose(bool disposing)
{
- if (!IsDisposing)
+ if (disposing)
{
- IsDisposing = true;
+ if (notifyIcon1 != null)
+ {
+ notifyIcon1.Visible = false;
+ notifyIcon1.Dispose();
+ notifyIcon1 = null;
+ }
+
+ if (components != null)
+ {
+ components.Dispose();
+ }
}
}
}