阻塞、中断:
在一个线程中调用Thread.Sleep方法会导致该线程立即被阻塞,阻塞的时间长度等于传递给Thread.Sleep方法的数值(单位为毫秒)。
如果调用Thread.Sleep方法时传入的参数为Timeout.Infinit,那么当前线程将永远休眠,直到被中断或者终止为止。
在另一个线程中对被阻塞的线程调用Thread对象的Interrupt方法,就会在被阻塞的线程中引发ThreadInterruptedException异常,将中断被阻塞的线程,从而使该线程摆脱阻塞。应该在被阻塞的线程中捕获ThreadInterruptedException异常,并执行适当的操作以继续运行线程。如果线程忽略该异常,则运行库将捕获该异常并停止该线程。
终止线程
Thread类的Abort方法用于永久地停止托管线程。调用Abort时,公共语言运行时在目标线程中引发ThreadAbortException,目标线程可捕捉此异常。线程一旦被终止,它将无法重新启动。
Abort方法不直接导致线程终止,因为目标线程可捕捉ThreadAbortException,并在finally块中执行任意数量的代码。线程的清理代码必须在catch子句或finally子句中,因为系统在finally子句的结尾处再次引发ThreadAbortException异常,如果没有finally子句,则在catch子句的结尾处再次引发该异常。通过调用Thread类的ResetAbort方法,可以防止系统再次引发该异常。但是,只有在你自己的代码中引发ThreadAbortException异常时,才应当这样做