程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#多線程開發5:線程的Abort和Interrupt方法

C#多線程開發5:線程的Abort和Interrupt方法

編輯:C#入門知識

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方法終止後的線程將不再執行。

  1. 上一頁:
  2. 下一頁: