5

非同期プロセスを使用して、長時間実行されているSQLクエリからデータを取得します。SqlCommand.BeginExecuteReader()プロセスは、メソッドを介してストアドプロシージャを呼び出します。

時々、プロセスをシャットダウンして、実行中のクエリを正常に終了したいと思います。

いくつかのテストの後、呼び出しSqlConnection.Close()で十分であるように見えます。念のため、明示的にも呼び出しますSqlConnection.Dispose()

SQL Server Profilerを介してトレースを実行すると、クエリが正常に終了したように見えます。SQL:BatchStartingこれは、の後に。SQL:BatchCompletedを呼び出した後に表示されClose()ます。

誰かが接続を閉じることが必要なすべてであるかどうかを確認できますか?

4

1 に答える 1

2

Close を呼び出すだけで十分です。

まず、必ず Close メソッドを finally ブロック内に記述して、正しい例外処理を確実に行ってください。

また、SqlConnection.Close メソッドと SqlConnection.Dispose メソッドの両方を呼び出す必要はありません。どちらも同じことを行うからです。IDisposable パターンを実装するために Dispose メソッドが追加され、このメソッドは内部的に SqlConnection.Close メソッドを呼び出します。これは、接続を閉じますが、それらを破棄しないため、より自然な名前です:)

DataReader を使用している場合は、他の目的で接続を使用するたびに閉じる必要があります。

于 2012-06-12T09:17:39.120 に答える