Thread.Sleep期间是否可以引发ThreadAbortException?

时间:2010-03-03 10:57:04

标签: c# multithreading sleep abort

Thread.Abort可以中断正在休眠的线程(使用Thread.Sleep(TimeSpan.FromDays(40))吗?还是会等到睡眠时间跨度到期?

(备注:FromDays(40)当然是个玩笑。我知道Thread.Abort不是推荐的一种停止线程的方法,我正在使用我现在不想重构的遗留代码。 )

2 个答案:

答案 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