C# 为什么cmd.BeginExecutenQuery(回调,cmd)抛出;异步操作已完成";

C# 为什么cmd.BeginExecutenQuery(回调,cmd)抛出;异步操作已完成";,c#,ado.net,wcf-data-services,C#,Ado.net,Wcf Data Services,在下面的代码命令中。EndExecuteNonQuery抛出 异步操作已完成 endexecutenquery结束异步操作。MSDN声明使用endexecutenonquiry正确完成操作。有什么想法吗 using (var command = new SqlCommand("EXEC SP", connection)) { AsyncCallback callback = HandleCallBack; command.BeginExecuteNonQuery(callback

在下面的代码
命令中。EndExecuteNonQuery
抛出

异步操作已完成

endexecutenquery
结束异步操作。MSDN声明使用
endexecutenonquiry
正确完成操作。有什么想法吗

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)
    {

    }
}

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


将using语句替换为try/catch以在Begin出现异常时释放命令,并在异步回调中添加try/FINAL以释放命令。

在异步操作完成之前,不应释放命令(此处通过using语句隐式地释放)

将using语句替换为try/catch以在开始时处理异常命令,并在异步回调中添加try/finally以处理该命令