 <p>I wrote a blog post on this awhile back. The first part is about when a thread can be aborted, the second is about how it actually works.</p> <p>I hadn't ever seen any correct (in this case, complete) documentation about how it actually works, so I wrote about about it.</p> <p>The jist is that the CLR will use SetThreadContext (a win32 api) to hijack your current IP and move you into a special stub to set up the thread abort if you're thread isn't in an abortable wait.</p> <p><a href="http://www.steveniemitz.com/Blog/post/Threads-cant-be-aborted-while-theyre-running-code-inside-a-catchfinally-block.aspx" rel="nofollow">Check out the post here</a></p>