您的位置:首页 > 编程语言 > C#

C#Thread的Interrupt方法

2016-06-02 15:10 489 查看
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");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: