码迷,mamicode.com
首页 > 编程语言 > 详细

C#多线程开发5:线程的Abort和Interrupt方法

时间:2015-05-13 21:51:31      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:abort   interrupt   多线程开发   threadabortexception   threadinterruptedexc   

使用线程的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方法终止后的线程将不再执行。

C#多线程开发5:线程的Abort和Interrupt方法

标签:abort   interrupt   多线程开发   threadabortexception   threadinterruptedexc   

原文地址:http://blog.csdn.net/yl2isoft/article/details/45699265

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!