我有一个WPF应用程序,它包含一个长时间运行的主窗口。在MainWindow
构造函数中,我定义了一个Notify图标:
private System.Windows.Forms.NotifyIcon notifyIcon;
public MainWindow()
{
InitializeComponent();
System.Windows.Forms.ContextMenu notifyMenu = new System.Windows.Forms.ContextMenu();
System.Windows.Forms.MenuItem notifyMenuItem = new System.Windows.Forms.MenuItem();
notifyMenuItem.Text = "Exit MainWindow";
notifyMenuItem.Click += new EventHandler(notifyMenuItem_Click);
notifyMenu.MenuItems.Add(notifyMenuItem);
notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.BalloonTipText = "MainWindow has been minimized. Click the tray icon to show.";
notifyIcon.BalloonTipTitle = "MainWindow";
notifyIcon.Text = "MainWindow";
notifyIcon.Icon = new System.Drawing.Icon("some.ico");
notifyIcon.Visible = true;
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.ContextMenu = notifyMenu;
}
这一切都很好,除了有时NotifyIcon
从托盘中消失。代码中绝对没有notifyIcon.Visible = false;
设置,因为NotifyIcon
也应该是可见的。我的应用程序(按要求)没有显示在任务栏中并使用单个实例管理器(如果另一个实例启动,则需要更新的实例立即中止)。因此,这会导致应用程序最小化到托盘,NotifyIcon消失以及应用程序未运行的用户事物(它是)并且无法启动新应用程序(单实例机制)。
我在这个问题上看过一些SO帖子,但他们似乎责怪NotifyIcon在主窗口以外的地方实例化,这不适用于我的情况。片状NotifyIcon行为还有其他原因以及补救措施吗?