Thread.Abort可以中断正在休眠的线程(使用Thread.Sleep(TimeSpan.FromDays(40))吗?还是会等到睡眠时间跨度到期?
(备注:FromDays(40)当然是个玩笑。我知道Thread.Abort不是推荐的一种停止线程的方法,我正在使用我现在不想重构的遗留代码。 )
答案 0 :(得分:4)
代码胜过千言万语:
public static void Main(string[] args)
{
var sleepy = new Thread(() => Thread.Sleep(20000));
sleepy.Start();
Thread.Sleep(100);
sleepy.Abort();
sleepy.Join();
}
程序在睡眠时间结束前结束。
答案 1 :(得分:-2)
您只能从另一个线程中止该线程。也就是说,你应该在某处存储Thread引用,然后从正在休眠的线程以外的线程中调用.Abort
。