转:C#SqlConnection超时问题,常规方法略

SqlConnection 在能正常连接的情况下,在连接字符串Connect Timeout=1或CommandTimeout中是有效果的。

但是如果主机本身就不正确,上述方法就没有用了,一等就是几十秒吧,CD啊。

走过千山万水,找遍万水千山,终于找到了。

http://blog.csdn.net/xiaoxian8023/article/details/7248792

基本思路就是,能不能在打开连接前先判断,主机是否能正常连接。

方法如下:

  public static bool TcpTestConnection(string host, int port, int millisecondsTimeout)
        {
            Stopwatch wt = new Stopwatch();
            wt.Reset();
            wt.Start();
            
            TcpClient client = new TcpClient();
            try
            {
                var ar = client.BeginConnect(host, port, null, null);//host是主机不包含端口,port就是端口了
                ar.AsyncWaitHandle.WaitOne(millisecondsTimeout);
                return client.Connected;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                client.Close();
                wt.Stop();
                MessageBox.Show(string.Format("耗时:{0}", wt.ElapsedMilliseconds));
            }
        }

调用方法:

 private void button1_Click(object sender, EventArgs e)
        {
            if (TcpTestConnection(this.richTextBox1.Text.Trim(), int.Parse(this.textBox2.Text.Trim().ToString()), int.Parse(this.textBox3.Text.Trim().ToString())))
           {  MessageBox.Show("ok");
            }
            else { MessageBox.Show("failure"); } 
        }

 

 

检测时间我的速度是85毫秒左右

posted @ 2013-08-03 19:00  永远的菜鸟@me  阅读(1437)  评论(0编辑  收藏  举报