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

时间:2012-08-17 14:48:05

标签: c#

  

可能重复:
  Response.Redirect(“”) inside “using{ }”

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

4 个答案:

答案 0 :(得分:7)

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

在IIRC中有一个轻微的皱纹,Response.Redirect会抛出一个ThreadAbortException,如果它被抓住会自动重新抛出,但这不会影响{{1}阻止。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

它将为您处理您的连接。

答案 3 :(得分:0)

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

应用程序进入一个永远不会返回的无限循环。 应用程序不合适地关闭。 using位于迭代器中,尚未实际输入。

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