2012-06-11 15 views
5

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

時々、私は自分のプロセスをシャットダウンし、実行中のクエリを正常に終了したいと思うことがあります。

テストの結果、SqlConnection.Close()で十分であるようです。良い尺度のために、私はまたSqlConnection.Dispose()を明示的に呼び出します。

SQL Serverプロファイラてトレースを実行しているとき、私はClose()を呼び出した後SQL:BatchCompleted続いSQL:BatchStartingを見ると、クエリが正常に終了したかのように、それが表示されます。

接続を閉じることが必要なことは誰でも確認できますか?閉じる呼び出し

答えて

2

が十分にある、わずか数備考:すべての

まず、あなたが最終的に正しい例外処理を確保するために、ブロック内のあなたの閉じるメソッドを記述してください。

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

DataReaderを使用している場合は、あなたが他の目的のために接続を使用したがっているたびに、毎回。

関連する問題