线程休眠中如何中止线程我需要停止一个线程,但如果它应该休眠8秒,我想中止它,它将继续休眠8秒,然后才停止。您不能(安全地)在线程休眠时中止它。您应该在阻止完成后立即检查中止,然后退出。无论如何,在大多数情况下确实没有这个缺点,因为线程在被阻塞时将使用很少的资源。如果必须尽快“中止”,可以使用不同的阻塞机制。休眠很少是正确的选择-等待句柄可能能够提供相同的功能,并为另一个线程提供一种方式来发出它应该立即停止阻塞的信号。使用ManualResetEvent:ManualResetEventmre=newManualResetEvent(false);//......varsignalled=mre.WaitOne(TimeSpan.FromSeconds(8));if(!signalled){//发生超时}在其他地方(8秒前):mre.Set();//解冻暂停的线程并导致发出信号==真并允许未阻塞的线程正常终止。Thread.Abort是邪恶的,应该避免。考虑使用System.Timers.Timer类。这是一个可以在需要时停止的计时器。你可以在这里找到一些很好的说明使用AutoResetEvent定时等待而不是睡眠,当你想中断等待线程时,使用Set来发出AutoResetEvent信号,否则定时器到期。以上就是C#学习教程:线程休眠时如何暂停线程共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。侵权请点击右侧联系管理员删除。如需转载请注明出处:
