我使用异步进程从长时间运行的SQL查询中检索数据。该过程通过SqlCommand.BeginExecuteReader()
方法调用存储过程。
有时,我想关闭我的进程并优雅地终止所有正在运行的查询。
经过一些测试,似乎调用SqlConnection.Close()
就足够了。为了更好地衡量,我还明确地致电SqlConnection.Dispose()
。
通过 SQL Server Profiler 运行跟踪时,看起来好像查询已正常结束,因为我在调用{{1}后看到SQL:BatchStarting
后跟SQL:BatchCompleted
}}
任何人都可以确认是否只需要关闭连接?
答案 0 :(得分:2)
调用关闭就足够了,只需几句意见:
首先确保在finally块中编写Close方法以确保正确的异常处理。
此外,您不需要同时调用SqlConnection.Close和SqlConnection.Dispose方法,因为它们都是这样做的。添加Dispose方法以实现IDisposable模式,此方法在内部调用SqlConnection.Close方法,该方法具有更自然的名称,因为我们关闭连接但不处理它们:)
如果您正在使用DataReader,那么每次想要将连接用于其他目的之后,您也必须关闭它。