我正在运行一个简单的.NET Windows窗体应用程序。当我点击关闭按钮时,Windows窗体被关闭,但进程没有关闭。当我看到任务管理器时,我发现应用程序的流程仍然是实时的,作为后台进程。 Windows窗体应用程序无法正常关闭
有人可以解释为什么吗?我在关闭时是否缺少一些功能?
我正在运行一个简单的.NET Windows窗体应用程序。当我点击关闭按钮时,Windows窗体被关闭,但进程没有关闭。当我看到任务管理器时,我发现应用程序的流程仍然是实时的,作为后台进程。 Windows窗体应用程序无法正常关闭
有人可以解释为什么吗?我在关闭时是否缺少一些功能?
你需要调用
Application.Exit();
在窗体的关闭事件。
Application.Exit
通知所有消息泵必须终止,然后在消息处理后关闭所有应用程序窗口。如果您调用了Application.Run(WinForms应用程序),则这是要使用的代码,此方法将停止所有线程上的所有正在运行的消息循环,并关闭应用程序的所有窗口。
// WinForms app
System.Windows.Forms.Application.Exit();
把这段代码从关闭事件中放到你身上。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
this.RemoveOwnedForm(this);
e.Cancel = true;
Process[] AllProcess = Process.GetProcesses();
for (int i = 0; i < AllProcess.Length; i++)
{
if (AllProcess[i].ProcessName.StartsWith("SmsAlertRemainder"))
{
AllProcess[i].Kill();
}
}
Application.Exit(e);
}
catch (Exception ex)
{
Logger.WriteException(ex);
}
}
您确定该应用程序的主窗体已关闭吗?有多种形式? – thewisegod
你的应用程序是否启动任何线程?如果是这样,你是否将他们的'IsBackground'属性设置为'true'? – adv12
OnFormClosing事件放入Application.Exit(); –