Interrupt方法,只可以中斷處於WaitSleepJoin狀態的線程,當線程不為WaitSleepJoin時,線程將恢複執行。
調用Interrupt方法會產生ThreadInterruptException異常
class Program { static void Main(string[] args) { StayAwake stayAwake = new StayAwake(); Thread newThread = new Thread(new ThreadStart(stayAwake.ThreadMethod)); newThread.Start(); newThread.Name = "new thread"; newThread.Interrupt(); Console.WriteLine("main thread calls interrupt on new thread"); stayAwake.SleepSwitch = true; Console.WriteLine("1stat " + Thread.CurrentThread.ThreadState); newThread.Join(); } } class StayAwake { bool sleepSwitch = false; public bool SleepSwitch { set { sleepSwitch = value; } } public void ThreadMethod() { Console.WriteLine("new thread is executing thread method"); while (!sleepSwitch) { Thread.SpinWait(10000000); } try { Console.WriteLine("2name " + Thread.CurrentThread.Name); Console.WriteLine("2stat " + Thread.CurrentThread.ThreadState); Console.WriteLine("new thread going to sleep"); Thread.Sleep(Timeout.Infinite); } catch (ThreadInterruptedException e) { Console.WriteLine("new thread can not go to sleep -" + "interrupted by main thread"); } } }