0

以下のコードcommand.EndExecuteNonQueryでスロー

非同期操作は既に完了しています。

EndExecuteNonQuery非同期操作を終了します。EndExecuteNonQuery操作を適切に完了するために使用する MSDN の状態。何かご意見は?

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 に答える