Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>From <a href="http://msdn.microsoft.com/en-us/library/aa973248.aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/library/aa973248.aspx</a> and <a href="http://msdn.microsoft.com/en-us/magazine/cc163298.aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/magazine/cc163298.aspx</a>:</p> <blockquote> <p><strong>Calling Response.Redirect WILL NOT execute the finally block</strong> (<em>and language-specific keywords like the C# "using" statement</em>). Therefore, before any redirection or transfer of processing can occur, you must dispose of the objects.</p> </blockquote> <p>But from <a href="http://msdn.microsoft.com/en-us/library/system.threading.threadabortexception.aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/library/system.threading.threadabortexception.aspx</a>:</p> <blockquote> <p>When a call is made to the Abort method to destroy a thread, the common language runtime throws a ThreadAbortException. ThreadAbortException is a special exception that can be caught, but it will automatically be raised again at the end of the catch block. <strong>When this exception is raised, the runtime executes all the finally blocks before ending the thread.</strong> Since the thread can do an unbounded computation in the finally blocks, or call Thread..::.ResetAbort to cancel the abort, there is no guarantee that the thread will ever end. If you want to wait until the aborted thread has ended, you can call the Thread..::.Join method. Join is a blocking call that does not return until the thread actually stops executing.</p> </blockquote> <p>Sounds like a test is in order...</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload