1

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

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

4

2 回答 2

6

代码值一千字:

public static void Main(string[] args)
{
    var sleepy = new Thread(() => Thread.Sleep(20000));

    sleepy.Start();
    Thread.Sleep(100);
    sleepy.Abort();
    sleepy.Join();
}

程序在睡眠时间用完之前结束。

于 2010-03-03T11:03:54.510 回答
-2

您只能从另一个线程中止线程。也就是说,您应该将 Thread 引用存储在某处,然后.Abort从正在休眠的线程以外的线程调用。

于 2010-03-03T11:01:33.213 回答