C#应用程序在SqlConnection失败期间挂起
我正在构建一个连接SQL Server和数据库的C#应用程序。在我的网络上,运行服务器的电脑在我的路由器上有一个保留的IP。因此,如果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
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();
}