C#连接服务器超时解决方法

一.服务器超时是什么:
解: 1.TCP超时,网络不稳定或者断开连接,造成无法连接服务器地址。
2.SqlConnection.Open超时,主要跟App.config连接数据库属性相关。
3.SqlCommand.Execute超时,主要与数据库握手超时失败造成。

二.解决服务器超时的目的:
解: 1.为了解决客户端在网络不稳定或者断开的时候,显示友好的提示,而不是系统提示,造成系统无限等待,造成假死界面。

三.解决服务器超时的做法:
解: 1.TCP超时:通过线程控制,根据设定线程时间与当前实例测量的总时间进行循环比较,两者比较,得出TCP是否超时。
方法:有两种:
第一种:适用于网络已经断开的情况。
namespace SalePro.Style
{
class IntConnectedState
{

    [DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
    //判断网络状况的方法,返回值true为连接,false为未连接
    public extern static bool InternetGetConnectedState(out int conState, int reder);

    public static bool GetConnect()
    {
        int n = 0;
        if (InternetGetConnectedState(out n, 0))
        {
            // MessageBox.Show("yes");
            return true;
        }
        else
        {
             MessageUtil.ShowTips("网络已断开,请查看网络是否连接!");
            return false;
        }
    }
}

}

第二种:适用于网络不稳定,网络连接断断续续的情况。
namespace SalePro.Style
{
public static class SqlExtensions
{
public static bool QuickOpen(this SqlConnection conn)
{
int timeout = 3100;

        Stopwatch sw = new Stopwatch();
        bool connectSuccess = false;

        Thread t = new Thread(delegate ()
        {
            try
            {
                sw.Start();
                conn.Open();
                connectSuccess = true;
            }
            catch { }
        });

        t.IsBackground = true;
        t.Start();

        while (timeout > sw.ElapsedMilliseconds)
            if (t.Join(1))
                break;

        if (!connectSuccess)
        {

            MessageDxUtil.ShowWarning("无法连接服务器,请查看网络连接是否通畅!");
            //conn.Close();
            return false;
        }
        conn.Close();
        return true;
    }
}

}

解: 2.SqlConnection.Open超时:通过App.config数据库连接属性进行修改。
方法:(增加:Connect Timeout=30)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>