【问题标题】:Program hang indefinitely on MySqlConnection.Open() call程序在 MySqlConnection.Open() 调用上无限期挂起
【发布时间】:2014-02-15 08:24:11
【问题描述】:

我正在使用 MySqlConnection 访问远程数据库。它在大多数计算机上都能正常工作。

但是。现在我遇到了 MySqlConnection.Open() 调用永远挂起的情况。我添加了一些写语句来查看它挂在哪里。请参阅下面的代码。语句“_Debug.Write("OpenConnection", "连接成功。");"永远达不到。也不抛出异常。我试图以管理员身份运行该应用程序,但它仍然挂在这里。 这一定是环境问题,因为这在所有其他计算机上都可以正常工作。 (我使用的是 .NET Framework 3.5)

有人对此有解决方案吗?但愿如此。 亲切的问候 罗伯·拜杰 -------------------------------------------------- --我的c#源代码 私有 MySqlConnection 连接; 私有字符串 _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;
        }
    }

【问题讨论】:

  • 如果抛出 Exception 怎么办......而不是 MySqlException
  • 可能是连接字符串错误。它最终会“超时”吗?
  • 不,它没有。它无限期地挂起。我不知道为什么。我认为默认超时是 30 秒。
  • 你能在getData();中展示你在做什么吗?

标签: c# mysqlconnection


【解决方案1】:
  1. 你不需要做connection.close(); 这是多余的,因为它是在using 块中创建的。

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

如果您正在连接到远程服务器并且您失去了互联网连接,这将特别有用。 connnection.open() 不会无限期挂起,但它会挂起自己的线程一段不希望的时间。

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2014-02-26
    • 1970-01-01
    • 2011-05-07
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多