在下面的代码中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)
{
}
}
在
异步操作完成之前,不应释放命令(此处隐式通过 using 语句)。
将 using 语句替换为 try/catch 以在 Start 上释放异常命令,并添加 try/finally 以在异步回调中释放命令。