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