在下面的代码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)
{
}
}
答案 0 :(得分:4)
在异步操作完成之前,不应该释放命令(隐式地在这里,通过using语句)。
将using语句替换为try / catch以将命令置于Begin上的异常上,并添加try / finally以在异步回调中处置该命令。