当前位置: 代码迷 >> C# >> C#多线程开发四:线程的Abort和ResetAbort方法
  详细解决方案

C#多线程开发四:线程的Abort和ResetAbort方法

热度:75   发布时间:2016-05-05 03:48:42.0
C#多线程开发4:线程的Abort和ResetAbort方法

使用Abort方法可以中止线程,而使用ResetAbort方法可以取消中止线程的操作。

下面的实例演示了AbortResetAbort方法的使用。

<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方法后,线程仍然在执行。


 

  相关解决方案