Chr*_*ore 4 .net response.redirect using
假设以下代码:
using (SqlConnection conn = new SqlConnection(connectionString))
{
...
using (SqlCommand comm = new SqlCommand(...))
{
.. do stuff ..
if(condition) Response.Redirect("somepage.aspx");
}
}
Run Code Online (Sandbox Code Playgroud)
Response.Redirect() 从 using 块退出会导致它处理所有连接吗?
或者,有没有办法退出不会导致处置的 using 块?
编辑:我不想在没有处置的情况下退出。我想知道任何会导致它不起作用的陷阱。-- 当然,除非崩溃,但我很确定所有对象都被处理了 -- 在这种情况下,很难
我接受了一个答案,基本上说“我不知道”,但这是一个经过充分研究的“我不知道”
同时,我将假设 Response.Redirect 中止 using 语句和代码并考虑到这一点。——除非另有证明。
从http://msdn.microsoft.com/en-us/library/aa973248.aspx和http://msdn.microsoft.com/en-us/magazine/cc163298.aspx:
调用 Response.Redirect 将不会执行 finally 块(以及特定于语言的关键字,如 C#“using”语句)。因此,在发生任何重定向或处理转移之前,您必须处置这些对象。
但来自http://msdn.microsoft.com/en-us/library/system.threading.threadabortexception.aspx:
当调用 Abort 方法来销毁线程时,公共语言运行时会引发 ThreadAbortException。ThreadAbortException 是一种可以被捕获的特殊异常,但它会在 catch 块结束时自动再次引发。引发此异常时,运行时会在结束线程之前执行所有 finally 块。由于线程可以在 finally 块中进行无界计算,或者调用 Thread..::.ResetAbort 来取消中止,因此不能保证线程将永远结束。如果要等到中止的线程结束,可以调用 Thread..::.Join 方法。Join 是一个阻塞调用,直到线程实际停止执行才会返回。
听起来像测试是为了...
归档时间: |
|
查看次数: |
2249 次 |
最近记录: |