Published on ONDotNet.com (http://www.ondotnet.com/)  See this
if you're having trouble printing code examples  Plumbing the
Depths of the ThreadAbortException Using Rotor  by Chris Sells,
coauthor of Mastering Visual Studio .NET  I was asked the other
day how calling Thread.Abort could raise an exception in a
completely different thread. Finding the answer led me a merry
chase.  Threads & Exceptions  An exception is something that
causes an alternate path of execution on the current thread. As
an example, consider the following:  static void Foo() {   throw
new Exception("oops!");   Console.WriteLine("Never going to get
here...");  static void Main(string[] args) {   try {
Console.WriteLine("Never going to get here, either...");
catch( Exception ex ) {     Console.WriteLine("Exceptions
happen: " + ex.Message);  Throwing an exception from the Foo
method will abort the rest of the statements in the Foo and
resume execution in the catch block in the Main method. However,
while the flow of execute has been