2013-03-09 48 views
0

我想寫一個異步連接到我的SQL服務器,但我遇到了捕獲異常的牆。 MSDN對此不是很有幫助。 我的第一種方法是:異步sqlConnection例外

async Task dbConnAsync(SqlConnection conn) 
    { 
     try 
     { 
      await conn.OpenAsync(); //Here i get InvalidOperationException 
     } 
     catch (Exception ex) 
     { 
      MessageBoxResult result = System.Windows.MessageBox.Show(ex.Message); 
     } 
    } 


    private async void ReadDB() 
    { 
      try 
      { 
       Task theTask = dbConnAsync(conn); 
       await theTask;     
      }..... 
    } 

,第二個:

private async void dbConnection() 
    { 
      try 
      { 
       await conn.OpenAsync();    
      }..... 
    } 

等諸多嘗試之後,我決定諮詢專家,讓我怎麼捕捉異常時,程序無法連接到服務器。

+0

究竟是什麼問題?代碼做什麼,你不想要的? – svick 2013-03-09 19:47:37

+0

我無法捕捉異常InvalidOperationException「連接未關閉連接的當前狀態正在連接」它發生在sqls服務器shoutdown時。 – 2013-03-09 20:05:26

+0

你確定你沒有抓住它嗎?你的代碼應該工作正常。也許你在VS有第一次機會異常對話?嘗試運行您的代碼而不進行調試。 – svick 2013-03-09 20:14:34

回答

0

異常告訴您連接已經處於打開狀態。您可能以前撥打conn.OpenAsync而無需等待它完成。可能你錯過了await

所以修復不是要捕捉異常,而是要消除潛在的原因。捕捉只是治療症狀。