就是这样。如果我在 using 语句中有一个连接到数据库,并且在该语句的某个地方重定向到另一个页面,它会释放我的连接吗?还是我必须先手动调用它?
就是这样。如果我在 using 语句中有一个连接到数据库,并且在该语句的某个地方重定向到另一个页面,它会释放我的连接吗?还是我必须先手动调用它?
Dispose
。使用using
语句的目的是在finally
块中调用Dispose
,因此无论块是正常完成还是异常完成,资源都将被处理。Response.Redirect
会抛出ThreadAbortException
,如果它被捕获,它会自动重新抛出,但这不应该影响finally
块。它将正确处理连接。 using
只是 try/finally
的语法糖。如果你想确认行为,请用 try/finally
替换 using
。在执行重定向之前,它将跳转到 finally
。
它将为您处理连接的释放。
有几种情况下,Dispose()
方法不会被调用:
应用程序进入无限循环且永远不会返回。
应用程序非正常关闭。
using
在迭代器中,并且尚未实际进入 using
。
你知道前两种情况都不是,因为你的进程既没有挂起也没有崩溃。
你知道第三种情况是因为重定向在 using
内部,所以不可能是这种情况。