我正在使用MySqlConnection访问远程数据库。它在大多数计算机上都能正常工作。
然而。现在我有一个案例,其中MySqlConnection.Open()调用永远挂起。我添加了一些写语句来查看它挂起的位置。请参阅下面的代码。声明“_Debug.Write(”OpenConnection“,”Connection succeeded。“);”永远不会到达。也没有抛出异常。我试图以管理员身份运行该应用程序,但它仍然挂在这里。 它必须是一个环境问题,因为这适用于所有其他计算机。 (我使用的是.NET Framework 3.5)
有人有解决方案吗?希望如此。 亲切的问候 Rob Baaij -------------------------------------------------- - 我的c#源代码 private MySqlConnection连接; private string _server =“Server = 5.666.82.191; Database = unknown; Uid = me; Pwd = mypasswd”;
public void getUserData()
{
using (connection = new MySqlConnection(_server))
{
if (OpenConnection())
{
getData();
connection.Close();
}
}
}
private bool OpenConnection()
{
bDatabaseConnectionSucceeded = false;
try
{
_Debug.Write("OpenConnection", "Opening connection now!!");
connection.Open();
bDatabaseConnectionSucceeded = true;
_Debug.Write("OpenConnection", "Connection succeeded.");
return true;
}
catch (MySqlException ex)
{
_Debug.Write("OpenConnection", "Connection failed." + ex.Message);
Debug.WriteLine(ex.Message);
return false;
}
}
答案 0 :(得分:0)
您不需要执行connection.close();
这是多余的,因为它是在using
块中创建的。
为什么要等待连接打开?为什么不分离你在当前线程中等待的另一个线程?如果它没有响应,您可以放弃,不用担心,稍后再试。
如果您连接到远程服务器并且丢失了Internet连接,这将非常有用。 connnection.open()
不会无限期地挂起,但它会在不合时宜的时间内挂起自己的主线。