用户使用 ADO.NET Datareader 从具有 1000 行的数据库表中提取数据。他在这期间关闭了浏览器。
那是在仅获取 50 条记录之后。数据阅读器会发生什么?它会保持连接吗?
并且会获取 1000 条记录,然后呢?垃圾收集器会很快收集和处理吗?
尽管 mdmullinax 是正确的,您应该将所有内容都包含在using
语句中以确保正确清理连接,但您的问题与 DataReader 的实现方式无关。
一般来说,即使浏览器断开连接,页面也会继续执行。
因此,如果 DataReader 正在从服务器读取响应的中途,它将在 DataReader 发出信号返回其处理已完成之前继续提取其余记录。
然后页面的其余代码完成执行并将响应刷新到浏览器。当然,此时浏览器早已不复存在,因此这些数据包最终会被丢弃......除非有东西正在检查 Response.IsClientConnected 属性。请记住,IsClientConnected 属性并不能完全证明,因为另一端的浏览器可能会在不通知服务器的情况下以多种方式消失。
有关更多信息,请查看此处:如果我在处理过程中关闭浏览器,asp.net 生命周期是否会继续?