2014-02-15 28 views
1

我正在使用MySqlConnection來訪問遠程數據庫。它在大多數計算機上工作正常。程序在MySqlConnection.Open()上無限期掛起調用

但是,現在我有一個MySqlConnection.Open()調用永遠掛起的情況。我添加了一些寫入語句來查看它掛起的位置。請參閱下面的代碼。聲明「_Debug.Write(」OpenConnection「,」連接成功。「);」永遠不會到達。也沒有例外拋出。我試圖以管理員身份運行該應用程序,但仍然掛在此處。 它必須是一個環境問題,因爲它可以在所有其他計算機上正常工作。 (我正在使用.NET Framework 3.5)

有沒有人有解決方案?但願如此。 親切的問候 Rob Baaij ------------------------------------------- ---------我的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; 
     } 
    } 
+1

如果引發'Exception'而不是'MySqlException'會怎麼樣? –

+2

也許連接字符串是錯誤的。它最終是否「超時」? – user2864740

+0

不,它不。它無限期地掛起。我不知道爲什麼。我想,默認超時時間是30秒。 – user3312861

回答

0
  1. 你不需要做connection.close();這是多餘的,因爲它是在一個using塊創建。

  2. 爲什麼要等待連接打開?爲什麼不分離在當前線程中等待的另一個線程?如果它沒有迴應,你可以放棄,不用擔心,稍後再試。

如果您連接到遠程服務器並且您失去了互聯網連接,這特別有用。 connnection.open()將不會無限期地掛起,但它會掛起其擁有的線程不合需要的時間。

相關問題