我有一个由Thread.Start()创建的长时间运行的线程。它使用大部分时间睡眠的QueueUserWorkItem衍生后台线程。如何终止产生另一个正在休眠的线程的线程?
然后,类的所有者得到处置我打电话thread1.Join()但自然它不会返回,因为它的子后台线程正在睡觉。
什么是正确的解决方案,以正常方式终止一个线程,其他线程很少麻烦?
在我写下这个问题后,我突然意识到,当我做这部分时,我可能有一个心理障碍。
首先,线程并不想因为后台线程而终止。但另一个原因。
第二 - 我不得不使用计时器,因为我没有理由持有线程 - 只能等待一天发生的事件!
这是非常愚蠢的我:)抱歉。
没有后台线程大多数时间睡觉。 – 2010-06-13 20:26:40
@Bobb,在这种情况下,即使它只是在睡觉,你仍然在使用线程池的线程很长一段时间。这应该避免。 – 2010-06-13 20:35:14
是的。请参阅下面的“答案”。我太迟了:) – 2010-06-14 14:37:09