C#多线程开发4:线程的Abort和ResetAbort方法
使用Abort方法可以中止线程,而使用ResetAbort方法可以取消中止线程的操作。
下面的实例演示了Abort和ResetAbort方法的使用。
<span style="font-size:14px;">using System; using System.Threading; namespace AbortAndResetabortExp { class Program { static void Main(string[] args) { Thread t = new Thread(DoWork); t.Name = "八戒"; t.Start(); Thread.Sleep(10000); Console.WriteLine("悟空:八戒,该起床了"); t.Abort(); } static void DoWork() { try { while (true) { Console.WriteLine(Thread.CurrentThread.Name + ":呼呼~~~~~"); Thread.Sleep(1000); } } catch (ThreadAbortException e) { Console.WriteLine(Thread.CurrentThread.Name + ":还早呢,我还要再睡会"); Thread.ResetAbort(); } for (int i = 0; i < 10; i++) { Console.WriteLine(Thread.CurrentThread.Name + ":呼呼~~~~~"); Thread.Sleep(1000); } } } }</span>
实例中,主线程启动“八戒”线程,使其“呼呼”睡觉。10秒钟后,主线程通过调用“八戒”线程的Abort方法中止“八戒”线程,“八戒”线程的Abort方法被调用后会触发ThreadAbortException异常,“八戒”线程捕获到该异常后,使用ResetAbort方法取消中止线程的操作,因为他还没有睡够呢。
整个程序的执行结果如下图所示,从结果中可以看出,调用ResetAbort方法后,线程仍然在执行。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。