C# Windows窗体应用程序未关闭

C# Windows窗体应用程序未关闭,c#,winforms,C#,Winforms,我正在用c#制作一个Windows窗体应用程序,在我关闭主窗体后,该进程从未停止。该进程位于后台,占用内存。我尝试过很多方法,比如Application.exit和Environment.exit,但都没有成功 我试过: private void Form1_FormClosing(Object sender, FormClosingEventArgs e) { Environment.Exit(0); } 及 我已经使用Application.Exit和Env

我正在用c#制作一个Windows窗体应用程序,在我关闭主窗体后,该进程从未停止。该进程位于后台,占用内存。我尝试过很多方法,比如Application.exit和Environment.exit,但都没有成功

我试过:

private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
    {
        Environment.Exit(0);
    }

我已经使用Application.Exit和Environment.Exit尝试了这两种方法

我只想要一个在关闭主窗体时终止进程的解决方案

编辑:
仔细检查后,仅当按下按钮切换到项目的第二个表单时,才会发生此错误:

Form2 f = new Form2();
        f.Show();
        this.Hide();
我使用了:

Environment.Exit(0);
Application.Exit();
它为我的一个项目工作。

我用过:

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

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

如果还没有,你需要用
[STAThread]
属性标记你的主方法(请参见),就像这样--

如果是,那么请确保

  • 。。。所有前台线程都将在窗体关闭之前终止
  • 。。。如果您订阅了
    FormClosing
    事件,请确保未设置
    Cancel=true
这两种解决方案都不是必需的,WinForm应用程序会在主窗体关闭时终止进程(假设没有其他任何东西阻塞,例如另一个前台线程)。您可以通过在VisualStudio中创建一个新的WinForm项目,运行它并关闭表单来测试这一点


除非您使用特定逻辑来控制应用程序何时退出,否则您肯定不需要
环境。退出(0)
(主要用于控制台应用程序)或
应用程序。退出()
(与WinForm应用程序一起使用)。关闭表单应该可以做到这一点,这可以通过调用
form.Close()

以编程方式完成。如果尚未关闭表单,则需要使用
[STAThread]
属性标记主方法(请参见),如下所示--

如果是,那么请确保

  • 。。。所有前台线程都将在窗体关闭之前终止
  • 。。。如果您订阅了
    FormClosing
    事件,请确保未设置
    Cancel=true
这两种解决方案都不是必需的,WinForm应用程序会在主窗体关闭时终止进程(假设没有其他任何东西阻塞,例如另一个前台线程)。您可以通过在VisualStudio中创建一个新的WinForm项目,运行它并关闭表单来测试这一点


除非您使用特定逻辑来控制应用程序何时退出,否则您肯定不需要
环境。退出(0)
(主要用于控制台应用程序)或
应用程序。退出()
(与WinForm应用程序一起使用)。关闭表单应该可以做到这一点,当使用按钮单击打开新表单时,可以通过调用
form.Close()
以编程方式完成此操作


使用按钮时,单击以打开新表单使用


仔细检查后,此错误仅在按下切换到项目第二个表单的按钮时发生。仔细检查后,此错误仅在按下切换到项目第二个表单的按钮时发生。隐藏主窗口当然是问题所在。不要把它藏起来,把它关上。并使用它来阻止终止您的程序。谢谢,它成功了!你能把这个写进一个答案吗?我已经回答了,重复回答会给我带来麻烦。只要自己发布,发布一个链接和一个片段就足够了。然后将帖子标记为问题的答案,关闭它。隐藏主窗口当然是个问题。不要把它藏起来,把它关上。并使用它来阻止终止您的程序。谢谢,它成功了!你能把这个写进一个答案吗?我已经回答了,重复回答会给我带来麻烦。只要自己发布,发布一个链接和一个片段就足够了。并将该帖子标记为问题的答案,以关闭该帖子。
        [STAThread]
        private static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
 using (Form1 frm = new Form())
        {

            frm.ShowDialog();

        }