WinForms Application.Exit不会必然退出应用程序

时间:2011-02-23 13:45:06

标签: c# .net winforms

在MSDN上我已经读过,调用Application.Exit不必每次都退出。我想知道是什么原因造成的? 我的意思是什么时候我可以预期Application.Exit不会退出应用程序?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

采用典型设置,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 
    }
}

很容易认为这会杀死/退出应用程序,但是实际上会出现YourForm并且应用程序仍在运行。