C# 在Visual Studio 2017上,如何关闭try/catch中的软件?

C# 在Visual Studio 2017上,如何关闭try/catch中的软件?,c#,winforms,C#,Winforms,我正在用Visual studio 2017上的C#开发一个软件,我希望它在数据库关闭时不会初始化,所以我尝试了下面的try/catch,但软件仍然没有退出,我有两个按钮要退出,它们可以工作,但是try-catch上的退出不能。我尝试了很多方法,将app.exit和close代码放在许多不同的地方,从其他功能调用,但都不起作用。 代码如下: public partial class Form1 : Form { int errobd = 0; public Form1()

我正在用Visual studio 2017上的C#开发一个软件,我希望它在数据库关闭时不会初始化,所以我尝试了下面的try/catch,但软件仍然没有退出,我有两个按钮要退出,它们可以工作,但是try-catch上的退出不能。我尝试了很多方法,将app.exit和close代码放在许多不同的地方,从其他功能调用,但都不起作用。 代码如下:

public partial class Form1 : Form
{
    int errobd = 0;
    public Form1()
    {
        InitializeComponent();
        try
        {
            string connectionString = "server=localhost;user id=root;persistsecurityinfo=True;database=bd_cem";
            MySqlConnection connection = new MySqlConnection(connectionString);
            connection.Open();
            connection.Close();
        }
        catch
        {
            Close();

            // at this point, the errobd++ works, so the if down there will be true
            errobd++;
            MessageBox.Show("Error message.");
            Application.Exit();
            Debug.WriteLine("ERRO = " + errobd);
        }
        if(errobd>0)
        {
            Sairsembanco();
        }

        LoadSalaNome();
        LoadADI();
    }

在所有这些努力之后,LoadSalaNome()函数仍在尝试运行,由于数据库已关闭,软件将崩溃。

您也可以尝试此函数:

Environment.Exit(exitCode)
这将终止进程并为底层操作系统提供指定的退出代码。这要求您具有
SecurityPermissionFlag.UnmanagedCode
权限,否则会发生
SecurityException
错误。
这是运行控制台应用程序时要使用的调用。

您也可以尝试此调用:

Environment.Exit(exitCode)
这将终止进程并为底层操作系统提供指定的退出代码。这要求您具有
SecurityPermissionFlag.UnmanagedCode
权限,否则会发生
SecurityException
错误。
这是在运行控制台应用程序时要使用的调用。

应用程序之后放置
return
。退出
。基本上,您不应该试图从主窗体的构造函数中终止应用程序。或者(1)设置一个a标志并在另一个点退出,如Load()或show()事件,或者(2)通过在program.cs中执行这种类型的签入来阻止窗体加载。感谢您的提醒,我一定会查看该程序。csKeneth K。我保留了environment.exit,它工作得很好。抱歉男:/,但如果你尝试一下,我很乐意知道它是否有效。闲着,我确实在program.cs使用了try-catch,它可以工作,甚至更快,谢谢你的帮助@肯尼思克。(仅参考)在
应用程序之后放置一个
return
。退出
。基本上,您不应该试图从主窗体的构造函数中终止应用程序。或者(1)设置一个a标志并在另一个点退出,如Load()或show()事件,或者(2)通过在program.cs中执行这种类型的签入来阻止窗体加载。感谢您的提醒,我一定会查看该程序。csKeneth K。我保留了environment.exit,它工作得很好。抱歉男:/,但如果你尝试一下,我很乐意知道它是否有效。闲着,我确实在program.cs使用了try-catch,它可以工作,甚至更快,谢谢你的帮助@肯尼思克。(只是引用)天哪,你太快了,我以为这需要几天才能得到答案,它成功了!]谢谢天哪,你太快了,我以为这需要几天才能得到答案,它成功了!]谢谢