如何在C#.NET中关闭整个应用程序后结束进程?

Pra*_*ant 2 .net c# desktop-application visual-studio-2005

我有一个.NET 2005(C#)桌面应用程序,其中有一个登录表单和一个MDI表单,然后有多个子表单.所有其他表单仅以MDI格式打开.

用户登录后,我隐藏登录表单然后显示MDI表单,但是当我关闭MDI表单时,我的应用程序进程没有结束,因为登录表单仍然是隐藏的.我想要的是,当用户关闭MDI表单时,整个应用程序应该关闭(实质上,该进程不应该显示在任务管理器中),因为如果每次用户关闭并重新打开应用程序并登录时,它都会创建一些性能问题.

我正在做类似下面的事情:

//my login validation script,

//after successful login

this.Hide();

if (globalData.ObjMdiMain.IsDisposed)
{
    globalData.ObjMdiMain = new mdiMain();
}
globalData.ObjMdiMain.Show();
Run Code Online (Sandbox Code Playgroud)

globalData是我的静态类,我在其中创建整个应用程序所需的全局对象.在那里,我已经定义了ObjMdiMain我的MDI表单的对象,我在登录表单中访问它.

那么,是否有任何方法或功能将从系统结束整个过程,如"Application.End();" 或者是其他东西?

谢谢!

Chr*_*ter 8

我假设您的描述(如果我错了请纠正我),您将登录表单设置为启动表单,如下所示:

    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new LoginForm());
    }
Run Code Online (Sandbox Code Playgroud)

不要那样做.改为将其改为:

    static void Main() {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        LoginForm frm = new LoginForm();
        if(frm.ShowDialog() == DialogResult.Cancel) {
            return;
        }

        Application.Run(new MdiForm());
    }
Run Code Online (Sandbox Code Playgroud)

在您的登录表单代码中,根本不要调用MDI表单,只需验证用户名和密码并允许登录表单退出.Main然后,该方法将正确调用MDI表单.

关闭MDI表单后,您的应用程序将自然退出.