【问题标题】:async sqlConnection exceptions异步 sqlConnection 异常
【发布时间】:2013-03-09 17:29:49
【问题描述】:

我正在尝试编写到我的 SQL 服务器的异步连接,但我遇到了异常。 MSDN 对此没有太大帮助。 我的第一个方法是:

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();               
            }.....
    }

经过多次尝试后,我决定咨询专家,如何在程序无法连接到服务器时捕获异常。

【问题讨论】:

  • 到底是什么问题?代码做了什么你不想要的?
  • 我无法捕获异常 InvalidOperationException "连接未关闭连接的当前状态为正在连接" 它发生在 sqls 服务器停止时。
  • 你确定你没有抓住它吗?您的代码应该可以正常工作。也许您在 VS 中有第一次机会异常对话框?尝试在不调试的情况下运行您的代码。
  • 我很确定这是我在调试选项中糟糕的一天,我启用了一段时间来抛出所有异常,而不仅仅是未处理的 -_-'。最后一个问题如何在第一次异常后停止我的任务现在我得到异常和每个超时时间。
  • 我看到你正在讨论这个问题。你评估我的答案了吗?我通常想知道它是否有帮助(或者如果没有,为什么)。

标签: c# sql asynchronous async-await


【解决方案1】:

异常告诉你连接已经在打开过程中。可能您之前没有等待它完成就调用了conn.OpenAsync。可能你错过了await

所以解决方法不是捕获异常,而是消除根本原因。捕捉只是治标。

【讨论】:

    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2019-08-29
    相关资源
    最近更新 更多