Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#应用程序在SqlConnection失败期间挂起_C#_Winforms_User Interface_Freeze_Sqlconnection - Fatal编程技术网

C#应用程序在SqlConnection失败期间挂起

C#应用程序在SqlConnection失败期间挂起,c#,winforms,user-interface,freeze,sqlconnection,C#,Winforms,User Interface,Freeze,Sqlconnection,我正在构建一个连接SQL Server和数据库的C#应用程序。在我的网络上,运行服务器的电脑在我的路由器上有一个保留的IP。因此,如果SQLConnection失败,这部分代码将挂起。代码如下: public static Boolean RevisarEstado(String ip, String usuario, String pass) { Boolean estado = false; SqlConnection miconexion = ne

我正在构建一个连接SQL Server和数据库的C#应用程序。在我的网络上,运行服务器的电脑在我的路由器上有一个保留的IP。因此,如果SQLConnection失败,这部分代码将挂起。代码如下:

public static Boolean RevisarEstado(String ip, String usuario, String pass)
    {

        Boolean estado = false;
        SqlConnection miconexion = new SqlConnection("Data source=" + ip + ";DataBase=Final_Algoritmos;User ID=" + usuario + ";Password=" + pass);

        try
        {
            miconexion.Open();
            estado = true;
            miconexion.Close();
        }
        catch (Exception) { estado = false;  miconexion.Close(); }
        return estado;

    }
如果SqlConnection的参数正常,则应用程序不会挂起,但如果参数不正确,则应用程序会挂起。我正在用windows form C#编程


我认为我必须在检查连接的过程中使用线程,在连接失败时使用状态栏。所以帮助我!求你了

如果要检查连接,请尝试创建新的待办事项:


这样,您的程序就不会挂起。

您是否尝试过在连接字符串中设置连接超时?e、 g.
;连接超时=10其中10以秒为单位。如果要在辅助线程上测试连接,请继续并进行测试。如果你在做这件事的时候真的有问题,那就是在这里发布问题的时候了。谢谢你的评论@Loasting,我试过了,但是它挂起了10秒以上。我想用OpenAsync方法在第二个线程中做,但是我不知道如何使用它与你的问题无关,但是你可能想看看这个类,它比使用字符串连接可靠得多。例如,如果用户想要一个
中的密码?连接字符串生成器自动处理分号的转义;Ty@User2012384,但我有一个小错误线程。Join();显示关于非静态字段、方法或属性的错误Thread.CurrentThread.Join()如何?我手头没有编译器。试一试,它成功了,不,我必须为调用工作。挂起的情况已停止,但句柄故障会在应用程序启动后54秒前作出反应。还有最后一件事。。。线程检查连接=新线程(()=>checkConn());thread参数如下所示。谢谢你的帮助!哦,谢谢你的更正,如果你遇到任何问题,请随时询问。
//Put these two lines to where you want to check the connection
Thread checkConnection = new Thread(() => checkConn());
checkConnection.Start();

//Then create a method like below
public void checkConn()
{
     //Call the check connection method here
     if(!miconexion(ip, user, pass))
     {
         //Handle failure here, please use Invoke if you want to control the UI thread.
     }
     //For best resource usage, join the thread after using it.
     Thead.Join();
}