Fix: Emby notification icon remained visible after shutdown
Also implemented the recommended pattern for IDisposable.
This commit is contained in:
parent
74f511b2ee
commit
f7c3ee1c68
|
@ -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();
|
||||
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (!IsDisposing)
|
||||
Dispose(true);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
IsDisposing = true;
|
||||
if (notifyIcon1 != null)
|
||||
{
|
||||
notifyIcon1.Visible = false;
|
||||
notifyIcon1.Dispose();
|
||||
notifyIcon1 = null;
|
||||
}
|
||||
|
||||
if (components != null)
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user