7

我有一个仅从系统托盘运行的应用程序,其唯一目的是通过 Ballon Tips 为用户提供信息。

它运行良好,除了一点小烦恼。当应用程序使用任务管理器(而不是使用上下文菜单)关闭时,图标会一直停留在系统托盘中,直到您将鼠标悬停在它上面,然后当另一个实例打开时,您会在第一个实例旁边看到第二个图标。

我的 Form Closed 事件看起来像这样,它什么也不做:

private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
    ntfyIcon.Visible = false;
    ntfyIcon.Icon = null;
    ntfyIcon.Visible = false;
    ntfyIcon.Dispose();
}

已在 Microsoft Connect 上报告,并且已被 Microsoft 关闭,Won't Fix因为显然这是应该发生的,但我希望有人有解决方案。

我在想一些关于在应用程序打开时清理系统托盘的事情?

谢谢

4

1 回答 1

3

Application.DoEvents()对我来说,它在设置后Icon调用并null处理NotifyIcon.

private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
    ntfyIcon.Icon = null;
    ntfyIcon.Dispose();
    System.Windows.Forms.Application.DoEvents();
}
于 2015-02-14T00:53:08.163 回答