线程的暂停与重新启动

调用Thread.Sleep使当前线程阻塞一段时间,休眠,直到调用Thread.Interrupt,另一个线程中断或被Thread.Abrot终止。
注意:一个线程不能对另一个线程Sleep.
Thread.Suapend暂停一个线程,自身调用,该调用阻塞,直到该线程被另一个线程继续为止。当另一个线程调用它,将会对该线程暂停。
Thread.Resume将使另一个线程跳出挂起状态并继续执行,而与调用SuSpend的次数无关。
例:
线程休眠5s:
Thread.Sleep(5000);
线程挂起:
Thread thread = new Thread(new ThreadStart(accp));
thread.Start();
...
thread.Suspend();
//线程重新开始:
....
thread.Resume();
线程的销毁:
    线程要占用大量的系统资源,完成特定使命后,必须适时销毁。销毁线程可用Thread
类的Abort方法或Interrupt方法。
    在调用Abort方法时,在指定线程上引发ThreadAbortException。以开始终止此线程的
过程。ThreadAbortException是—个可以由应用程序代码捕获的特殊异常,但除非调用
ResetAbort,否则会在catch块的结尾再次引发它。ResetAbod可以取消Abort的请求,并
阻止ThreadAbortException终止此线程。但是,线程不一定会立即中止,或者根本不中止。
如果线程在作为中止过程的一部分被调用的finally块中做非常大量的计算,从而无限期延
迟中止操作,则会发生这种情况。若要确保线程已经终止,请在调用Abort之后对线程调
用Join方法。如果对尚未启动的线程调用Abort,则当调用Start时该线程将中止。如果
对已挂起的线程调用Abort,则法线程将继续,然后终止。如果对被阻塞或正在休眠的线程
调用Abort,则该线程被中断,然后中止。


 

原文地址:https://www.cnblogs.com/whitetiger/p/676856.html