转: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毫秒左右

转载于:https://www.cnblogs.com/bantongshui/p/3235074.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值