Windows表单应用程序未关闭

时间:2016-06-07 21:36:57

标签: c# winforms

我在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();

3 个答案:

答案 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();

        }