如何在C#.NET关闭整个应用程序后,结束进程?(How to end process after

2019-09-01 05:03发布

我有一个.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是我的,我创造这是由整个应用程序所需的全局对象的静态类。 在那里,我已经定义了ObjMdiMain我MDI形式的对象,我在登录表单这里访问它。

所以,是否有任何方法或函数,它将结束从系统的全过程,类似“Application.End();” 或者是其他东西?

谢谢!

Answer 1:

我从你的描述假设(请纠正我,如果我错了),你必须登录表单设置为启动窗体,如下所示:

    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形式退出自然。



Answer 2:

我觉得奇怪,你离开隐藏在首次登录后登录窗口。 为什么不收呢? 然后,你不会有当前的问题:成功登录后,你只需要在主MDI窗口关闭时退出正在运行的Windows窗体应用程序。 有没有什么隐藏的登录窗口,而不是关闭它的理由吗?



Answer 3:

我想你已经看了Application.Exit ?



Answer 4:

有Application.Exit()将发送一个消息窗口关闭所有形式和退出消息循环。



Answer 5:

我不想打破它给你,但是...... Application.Exit()是你问什么。 假如你确实尽力了,你会发现它。 虽然,我有peSHIr同意,你为什么要保持登录表单周围,如果它导致你的问题?



Answer 6:

这里是关闭的实际过程的满耳,但它是坏的方式来关闭一个应用程序:

Environment.Exit(Code) 

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

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

祝好运 ;)



Answer 7:

这似乎是一个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

谢谢



文章来源: How to end process after closing whole application in C#.NET?