In what cases does it not interrupt the flow?
This question is a duplicate.
What is wrong with Thread.Abort ()
Is there any other way to stop threads?
Yes. Your problem is that you should never run a thread that you cannot politely say, and it stops in a timely manner. If you are in a situation where you need to start a thread that can be (1) difficult to stop, (2) a mistake or the worst of all (3) hostile to the user, then the right thing is to make a new process, start the thread in a new process, and then complete the process when you want the thread to drop. The only thing that can guarantee the safe termination of an incompatible thread is the operating system, which removes the entire process.
See my overly long answer to this question for more details:
Using a lock statement in a loop in C #
The corresponding bit is the bit at the end where I discuss what considerations concern how long you should wait for the thread to kill itself before you stop it.
Eric Lippert Feb 12 '10 at 16:06 2010-02-12 16:06
source share