【问题标题】:Windows form application not closingWindows 窗体应用程序未关闭
【发布时间】:2016-10-07 23:20:18
【问题描述】:

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

【问题讨论】:

  • 隐藏你的主窗口当然是个问题。只是不要隐藏它,关闭它。并使用this code 阻止它终止您的程序。
  • 谢谢它的工作!你能把这个放在答案中吗?
  • 我已经回答过了,重复回答会给我带来麻烦。自己发一下,发个链接和sn-p就够了。并将帖子标记为您问题的答案以关闭它。

标签: c# winforms


【解决方案1】:

我用过:

Environment.Exit(0);
Application.Exit();

它在我的一个项目上为我工作。

【讨论】:

    【解决方案2】:

    如果还没有,你需要用[STAThread]属性标记你的main方法(见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() 以编程方式完成。

    【讨论】:

    • 经过仔细检查,仅当按下切换到我项目的第二种形式的按钮时才会出现此错误。
    【解决方案3】:

    当使用按钮点击打开新表单时,使用USING

     using (Form1 frm = new Form())
            {
    
                frm.ShowDialog();
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多