日期:2014-05-17  浏览次数:21284 次

C# 关于数据库连接失败时程序卡住无反应的问题

private static SqlConnection mySqlConnection;
private static string ConnectionString="";

        private string ConnectionStringFunction()//根据文本框内的参数值,返回连接字符串
        {
            return "server=" + this.textBox1.Text + ";database=" + this.textBox2.Text + ";uid=" + this.textBox3.Text + ";pwd=" + this.textBox4.Text + ";Asynchronous Processing=True;Connection Timeout=1;";
        }

        private void checkLinkBtn_Click(object sender, EventArgs e)//测试数据库是否连接成功按钮
        {
            ConnectionString = ConnectionStringFunction();
            mySqlConnection = new SqlConnection(ConnectionString);
            try
            {
                mySqlConnection.Open();
            }
            catch
            {
               //TEST
               messageBox.show("失败");
            }

            finally
            {
                if (mySqlConnection.State == ConnectionState.Closed || mySqlConnection.State == ConnectionState.Broken)
                {
                    this.label5.Text = "连接失败";
                }
                else
                {
                    this.label5.Text = "连接成功";
                }
                mySqlConnection.Close();
            }


        }



代码如上。
1)当服务器IP地址正确,然后数据库名/用户名/登陆密码有问题的时候,程序1秒内就可以捕捉到异常,弹出错误提示;
2)当服务器IP地址连不通的时候,程序先是卡住无响应,要等好久才能弹出报错信息。
请教,当服务器地址连不通的时候,如何才能让异常信息在1-2秒内报出来?