3

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

差不多就是这样。例如,如果我在 using 语句中有与数据库的连接,并且在我重定向到另一个页面的 using 语句中的某个位置,它会处理我的连接还是必须先手动调用它?

4

4 回答 4

7

是的,它绝对会调用Dispose. using语句的重点是Dispose在块中调用finally,因此无论块正常完成还是异常完成,资源都会被释放。

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

于 2012-08-17T14:50:49.430 回答
2

它将正确处理连接。using只是 . 的语法糖try/finally。如果要确认行为,请替换 using for try/finally。它将跳转到finally重定向之前。

于 2012-08-17T14:52:39.717 回答
0

它将为您处理您的连接。

于 2012-08-17T14:50:29.540 回答
0

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

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

你知道你没有前两个,因为你的进程既没有挂起也没有崩溃。你知道你有第三个,因为重定向在里面,using所以不可能是这样。

于 2012-08-17T15:44:46.683 回答