线程按名称或任何其他方法休眠

时间:2014-05-01 18:58:58

标签: c# multithreading

无论如何都要按名称或其他任何来源睡觉一些特定的 thread 如果我有两个线程

            Thread call = new Thread(() => open_page(txtbx_1.Text));
            call.Start();

            Thread call_2nd = new Thread(() => open_page(txtbx_1.Text));
            call_2nd.Start();

我想睡眠callcall_2nd至少15分钟(但不想sleepThread

由于

3 个答案:

答案 0 :(得分:3)

不 - 你不能要求另一个线程睡觉。除了其他任何事情,当你想要它睡觉时,它可能会持有锁或其他资源,这些资源在睡觉时确实不应该被保留。

你必须合作完成这项工作,线程之间有某种共享数据,表明你想睡觉的时间和持续时间。或者,将计时器安排为仅在一段时间后启动相关活动

答案 1 :(得分:0)

,但方式与您想象的不同。

让您要定期睡觉的目标线程检查手动重置事件。每当目标线程应该休眠时,控制线程清除该事件(标志),否则它总是被设置。如果希望目标线程只休眠一段时间,请将该值用作等待超时。

  • 如果事件已设置(无睡眠),则立即满足等待并继续执行
  • 如果事件被清除(休眠),目标线程将停止直到
    • 超时(15分钟= 15 * 60 * 1000毫秒)已过去
    • 或控制线程在该时间范围内再次设置事件

如果需要检查目标线程是否处于等待状态,请考虑另一个事件/标志/计数器,由目标线程设置,并由控制线程读取。

答案 2 :(得分:0)

为什么你想要一个线程进入睡眠状态,除非它本来会做一些你不希望它做的事情?为什么你会编写一个线程来做你不想做的事情?

如果您提出这个问题,那么在您的设计或实施中某些地方就会出现问题。