繁体   English   中英

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

[英]How to end process after closing whole application in C#.NET?

我有一个.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();

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

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

谢谢!

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

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

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

    static void Main() {

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

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

        Application.Run(new MdiForm());
    }

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

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

我发现在初次登录后隐藏登录窗口很奇怪。 为什么不关闭它? 那么您就不会遇到当前的问题:成功登录后,您只有主MDI窗口,该窗口在关闭时退出正在运行的Windows窗体应用程序。 您是否有理由隐藏登录窗口而不是关闭它?

我认为你看过Application.Exit

Application.Exit()将发送一个Windows消息来关闭所有表单并退出消息循环。

我讨厌打破它,但是... Application.Exit()就是你所要求的。 如果你真的尝试过,你会发现它。 虽然,我必须同意peSHIr,如果它导致您的问题,为什么要保留登录表单?

这是关闭实际过程的主要方法,但这是关闭应用程序的不好方法:

Environment.Exit(Code) 

你可以将代码设置为0.或其他整数,这将告诉windows wath是执行应用程序的结果。

我建议你先关闭登录表单,然后关闭你的应用程序,这是正确的方法。

祝好运 ;)

这似乎是MySql .net连接器的bug,因为我使用的是mysql .net连接器DLL连接到我的mysql数据库。 我也看到了其他一些抱怨。 请参见http://bugs.mysql.com/bug.php?id=36688

我正在使用版本5.1的MySQL .net连接器DLL,我刚刚升级到6.1(最新),它的工作正常,没有任何错误。

在这里下载最新的DLL: http//dev.mysql.com/downloads/connector/net/6.1.html

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM