Multithreading 在.NET中启动睡眠线程

Multithreading 在.NET中启动睡眠线程,multithreading,Multithreading,如果一个threadA正在休眠,另一个threadB将如何调用threadA启动? 如果可能,请提供一个示例。一个线程可以通过等待WaitObject并让另一个线程对其调用Set方法来启动。看这张照片 这篇文章可能也有帮助。您不想睡觉,而是想创建一个并使用一个超时 如果希望线程早点醒来,只需将事件设置为signaled 首先创建EventWaitHandle: wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset)

如果一个threadA正在休眠,另一个threadB将如何调用threadA启动?
如果可能,请提供一个示例。

一个线程可以通过等待WaitObject并让另一个线程对其调用Set方法来启动。看这张照片


这篇文章可能也有帮助。

您不想睡觉,而是想创建一个并使用一个超时

如果希望线程早点醒来,只需将事件设置为signaled

首先创建
EventWaitHandle

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));
wakeUpEvent.Set();
然后在您的线程中:

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));
wakeUpEvent.Set();
当主程序希望提前唤醒线程时:

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));
wakeUpEvent.Set();

注意:您可以将事件设置为自动重置或手动重置。自动重置意味着一旦WaitOne从事件中返回,它会将其设置回无信号状态。如果您处于循环中,并且多次发出信号,这将非常有用

如果需要,线程将自动停止并手动写入:wakeUpEvent=neweventwaithandle(false,EventResetMode.ManualReset | EventResetMode.AutoReset);现在,如果计时器将结束,线程将恢复工作,您也可以手动停止它。