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