My model of how threads work is that some ThreadManager gives each thread a turn. When it’s a thread’s turn, it gets to execute a few lines of code.
To pause a thread, couldn’t one just have the ThreadManager (momentarily) stop allowing that thread to have a turn?
To abort a thread, couldn’t the ThreadManager just never give that thread another turn?
What’s the problem?
Quote from MSDN about pausing threads:
Aborted thread can lead to unpredicted circumstances. There is a good article about this: http://www.bluebytesoftware.com/blog/2009/03/13/ManagedCodeAndAsynchronousExceptionHardening.aspx