C#多线程开发5:线程的Abort和Interrupt方法
使用线程的Abort方法可以终止线程;而使用线程的Interrupt方法只可以中断处于 WaitSleepJoin 状态的线程,当线程状态不再为 WaitSleepJoin时,线程将恢复执行。在线程上调用Abort方法会引发 ThreadAbortException异常,调用Interrupt方法则会引发ThreadInterruptedException异常。
下面的实例演示了Abort和Interrupt方法的使用。
using System; using System.Threading; namespace AbortAndInterruptExp { class Program { static void Main(string[] args) { Console.WriteLine("------------Interrupt方法执行情况---------------"); Thread t1 = new Thread(DoWork); t1.Start(); Thread.Sleep(1000); t1.Interrupt(); t1.Join(); Console.WriteLine("------------Abort方法执行情况---------------"); Thread t2 = new Thread(DoWork); t2.Start(); Thread.Sleep(1000); t2.Abort(); } static void DoWork() { for (int i = 0; i < 10; i++) { try { Console.WriteLine("第" + i + "循环。"); Thread.Sleep(500); } catch (ThreadInterruptedException e) { Console.WriteLine("第" + i + "循环中,线程被中断,下次循环线程将继续运行。"); } catch (ThreadAbortException e) { Console.WriteLine("第" + i + "循环中,线程被终止,线程将不再继续运行"); } } } } }
实例结果如下所示。
从结果可以看出,当线程状态为WaitSleepJoin 时,使用Interrupt方法可以中断线程,当线程状态不再为为WaitSleepJoin 时,线程将继续执行;而Abort方法终止后的线程将不再执行。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。