【发布时间】:2013-04-16 16:54:43
【问题描述】:
我有一个在系统托盘(通知区域)中运行的非常基本的应用程序。 Main 方法如下所示:
using (NotifyIcon notifyIcon = new NotifyIcon())
{
notifyIcon.ContextMenuStrip = new ContextMenuStrip();
notifyIcon.ContextMenuStrip.Items.Add(new ToolStripMenuItem(
"Exit",
null,
delegate { App.Exit(); }
)
);
notifyIcon.Icon = Properties.Resources.MyIcon;
notifyIcon.Visible = true;
Application.Run();
}
到目前为止,这工作正常(我可以使用上下文菜单中的退出选项并且应用程序正确退出。但是,当软件卸载时我需要退出应用程序。现在我正在使用我的 taskkill WiX安装程序来做到这一点(也许有更好的方法?)。问题是如果我这样做taskkill /im myapp.exe,通知区域中的图标会消失但进程仍在运行。如果我用taskkill /f /im myapp.exe强制关闭它,那么进程结束,但图标仍然存在(直到我将鼠标悬停在它上面)。有没有办法删除图标并从单独的进程中结束进程?
【问题讨论】:
-
您需要告诉您的应用程序退出,以便它可以从系统托盘中取消注册。 taskkill 只是从内存中卸载进程,进程没有机会做任何响应。