1

MySqlConnection を使用してリモート データベースにアクセスしています。ほとんどのコンピュータで問題なく動作します。

でも。今、MySqlConnection.Open() 呼び出しが永久にハングするケースがあります。ハングする場所を確認するために、いくつかの書き込みステートメントを追加しました。以下のコードを参照してください。ステートメント "_Debug.Write("OpenConnection", "接続に成功しました。");" 到達することはありません。また、例外はスローされません。管理者としてアプリケーションを実行しようとしましたが、まだここでハングします。これは他のすべてのコンピューターで正常に機能するため、環境の問題に違いありません。(私は .NET Framework 3.5 を使用しています)

誰かがこれに対する解決策を持っていますか? そうだといい。よろしく ロブ・ベイジ ---------------------------------------------- ------私の C# ソース コード プライベート 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;
        }
    }
4

1 に答える 1

0
  1. ブロックconnection.close();で作成されるため、これは冗長です。using

  2. 接続が開くのを待つ必要はありません。現在のスレッドで待機している別のスレッドをスピンオフしてみませんか? 応答がない場合は、心配せずにあきらめて、後でやり直すことができます。

これは、リモート サーバーに接続していて、インターネット接続が失われた場合に特に便利です。connnection.open()無期限にハングすることはありませんが、所有するスレッドが望ましくない時間ハングします。

于 2016-01-13T03:23:06.660 に答える