程序在MySqlConnection.Open()调用上无限期挂起

时间:2014-02-15 08:24:12

标签: c# mysqlconnection

我正在使用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;
        }
    }

1 个答案:

答案 0 :(得分:0)

  1. 您不需要执行connection.close();这是多余的,因为它是在using块中创建的。

  2. 为什么要等待连接打开?为什么不分离你在当前线程中等待的另一个线程?如果它没有响应,您可以放弃,不用担心,稍后再试。

  3. 如果您连接到远程服务器并且丢失了Internet连接,这将非常有用。 connnection.open()不会无限期地挂起,但它会在不合时宜的时间内挂起自己的主线。