我在c#中创建一个Windows窗体应用程序,在关闭主窗体后,该过程永远不会被杀死。这个过程处于后台,占用了记忆。我尝试过很多方法,例如Application.exit和Environment.exit,但都没有。
我试过了:
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
Environment.Exit(0);
}
并且
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Environment.Exit(0);
}
}
我已经使用Application.Exit和Environment.Exit
尝试了这两种方法我只想要一个解决方案,在关闭主窗体时杀死进程
仔细检查后,只有在按下按钮切换到项目的第二个表单时才会出现此错误:
Form2 f = new Form2();
f.Show();
this.Hide();
答案 0 :(得分:2)
我用过:
Environment.Exit(0);
Application.Exit();
它在我的一个项目上为我工作。
答案 1 :(得分:1)
如果还没有,您需要使用[STAThread]
属性标记主要方法(请参阅https://stackoverflow.com/a/1361048/1497128),就像这样 -
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
如果是,请确保......
FormClosing
活动,请确保您未设置Cancel = true
您的解决方案都不是必需的,WinForm应用程序在主窗体关闭时终止进程(假设没有其他阻塞,例如另一个前台线程)。您可以通过在Visual Studio中创建一个新的WinForm项目,运行它并关闭表单来测试它。
除非您使用特定逻辑来控制应用程序何时退出,否则您绝对不需要Environment.Exit(0)
(主要用于控制台应用程序)或Application.Exit()
(与WinForm应用程序一起使用)。关闭表单应该这样做,可以通过调用form.Close()
以编程方式完成。
答案 2 :(得分:0)
使用按钮点击打开新表单时,请使用USING
using (Form1 frm = new Form())
{
frm.ShowDialog();
}