在using块中调用Response.Redirect()调用Dispose()吗?

可能重复:
Response.Redirect(“”)在“using {}”里面

差不多那个。 例如,如果我在using语句中和数据库中的某个地方连接到我使用的语句,我将重定向到另一个页面,它会丢弃我的连接还是我必须先手动调用它?

是的,它绝对会叫Disposeusing语句的要点是在finally块中调用Dispose ,因此无论块是正常完成还是exception,都将处置资源。

在IIRC中有一个轻微的皱纹, Response.Redirect抛出一个ThreadAbortException ,如果它被捕获将自动重新抛出,但这不应该影响finally块。

它会妥善处理连接。 using只是try/finally语法糖。 如果要确认该行为,请替换using for try/finally 。 在进行重定向之前,它会跳转到finally

它会为您处理您的连接。

有几种情况下不会调用Dispose()

应用程序进入一个永远不会返回的无限循环。 应用程序不合适地关闭。 using是在迭代器中,并且还没有实际输入。

你知道你没有前两个,因为你的过程既不会挂起也不会崩溃。 你知道你是第三个,因为重定向在using所以情况并非如此。