And*_*sch 5 c# sql-server ado.net
我使用异步进程从长时间运行的SQL查询中检索数据.该过程通过该SqlCommand.BeginExecuteReader()方法调用存储过程.
有时,我想关闭我的进程并优雅地终止任何正在运行的查询.
经过一些测试,似乎呼叫SqlConnection.Close()就足够了.为了更好的衡量,我也明确地打电话SqlConnection.Dispose().
通过SQL Server Profiler运行跟踪时,看起来好像查询优先结束,因为我看到SQL:BatchStarting后跟SQL:BatchCompleted调用Close().
任何人都可以确认是否只需要关闭连接?
调用 Close 就足够了,只需几句话:
首先,请确保在finally 块中编写Close 方法,以确保正确的异常处理。
此外,您不需要同时调用 SqlConnection.Close 和 SqlConnection.Dispose 方法,因为它们的作用相同。添加Dispose方法来实现IDisposable模式,该方法内部调用SqlConnection.Close方法,该方法有更自然的名称,因为我们关闭连接,但不释放它们:)
如果您正在使用 DataReader,那么每次您想要将连接用于其他目的后,您也必须关闭它。