2013-03-09 101 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

所以修复不是要捕捉异常,而是要消除潜在的原因。捕捉只是治疗症状。