C# WinForms应用程序。退出不一定要退出应用程序

C# WinForms应用程序。退出不一定要退出应用程序,c#,.net,winforms,C#,.net,Winforms,在MSDN上,我读到了调用应用程序。退出并不一定每次都要退出。我想知道是什么原因造成的? 我的意思是当我可以预期该应用程序时。退出将不会退出该应用程序?Application.Exit将为每个打开的表单调用FormClosing,并且此事件可以取消。如果任何表单已取消此事件,则Application.Exit将停止而不执行任何操作。否则所有表格将关闭。但是,如果有任何非后台线程在工作(除了主线程),则应用程序将无法完成应用程序。退出。application.Exit将为每个打开的表单调用Form

在MSDN上,我读到了调用应用程序。退出并不一定每次都要退出。我想知道是什么原因造成的?
我的意思是当我可以预期该应用程序时。退出将不会退出该应用程序?

Application.Exit将为每个打开的表单调用FormClosing,并且此事件可以取消。如果任何表单已取消此事件,则Application.Exit将停止而不执行任何操作。否则所有表格将关闭。但是,如果有任何非后台线程在工作(除了主线程),则应用程序将无法完成应用程序。退出。

application.Exit将为每个打开的表单调用FormClosing,并且可以取消此事件。如果任何表单已取消此事件,则Application.Exit将停止而不执行任何操作。否则所有表格将关闭。但是,如果有任何非后台线程在工作(除了主线程),应用程序将无法完成。退出。

采用典型设置,即VS为WinForms项目生成的默认设置

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new YourForm());
}
现在,在您的表单中,如果构造函数中发生错误

public YourForm()
{
    InitializeComponent();

    try
    {
       //do some stuff + error occurs...

       //simulate error
       throw new exception("blah");

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());                 
        Application.Exit(); //useless 
    }
}

很容易认为这会终止/退出应用程序,但实际上您的表单会出现,并且应用程序仍在运行。

采用典型的设置,这是VS为WinForms项目生成的默认设置

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new YourForm());
}
现在,在您的表单中,如果构造函数中发生错误

public YourForm()
{
    InitializeComponent();

    try
    {
       //do some stuff + error occurs...

       //simulate error
       throw new exception("blah");

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());                 
        Application.Exit(); //useless 
    }
}

很容易认为这会终止/退出应用程序,但实际上您的表单会出现,并且应用程序仍在运行。

您可能会从这个问题中获得更多信息:您可能会从这个问题中获得更多信息: