【发布时间】:2018-03-12 10:48:21
【问题描述】:
这个问题应该有一个非常简单的答案,但我似乎找不到解决方案。我在 SO 上看到过类似的问题(例如 NotifyIcon remains in Tray even after application closing but disappears on Mouse Hover),但它们并未涵盖我的情况。
我有一个 WPF 应用程序,它在 MainWindow 方法中设置了一个通知图标:
InitializeComponent();
myIcon = new System.Windows.Forms.NotifyIcon();
myIcon.Icon = someFancyIcon;
myIcon.Visible = true;
在 xaml 中,我定义了 Window 属性 Closing="Window_Closing" 以便在关闭窗口时调用:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
Log.Info("Closing application");
myIcon.Icon = null;
Environment.Exit(0);
}
如果我运行应用程序并以正常方式关闭它,则会调用 Window_Closing 并且通知图标会按预期消失(并且信息会输出到日志中)。
问题是:此应用程序被另一个进程监视(我无法控制),并且该其他进程有时会杀死 WPF 应用程序进程,因此永远不会调用 Window_Closing 并且我的应用程序通知图标一直在通知区域上徘徊,直到您将鼠标悬停在它上面。由于监控进程可以重启我的应用程序并再次关闭它几次,通知区域很快就会被通知图标的副本填满。
如何删除通知图标,即使我的应用程序以某种异常方式完成,图标也会消失?
【问题讨论】:
-
您好,这可能会对您有所帮助 - stackoverflow.com/questions/19217910/…
-
您可能会发现这个答案也很有用:stackoverflow.com/a/14723876/1964969