0

在下面的代码中command.EndExecuteNonQuery抛出

异步操作已经完成。

EndExecuteNonQuery结束异步操作。MSDN 状态用于EndExecuteNonQuery正确完成操作。有什么想法吗?

using (var command = new SqlCommand("EXEC SP", connection))
{
    AsyncCallback callback = HandleCallBack;
    command.BeginExecuteNonQuery(callback, command);
}

private void HandleCallBack(IAsyncResult result)
{
    try
    {
        using (var command = (SqlCommand)result.AsyncState)
        {
            command.EndExecuteNonQuery(result);
        }
    }
    catch (Exception ex)
    {

    }
}
4

1 回答 1

4

在异步操作完成之前,您不应该处理命令(在这里隐式地通过 using 语句)。

将 using 语句替换为 try/catch 以在 Begin 上处理异常命令,并添加 try/finally 以在异步回调中处理命令。

于 2012-11-20T19:24:23.813 回答