如果一个线程正在休眠,那么另一个线程线程将如何调用threadA来启动?
请提供一个示例(如果可能)。
最佳答案
除了 sleep 之外,您还需要创建一个EventWaitHandle并在超时的情况下使用WaitOne。
当您希望线程提早唤醒时,只需将事件设置为已通知。
首先创建EventWaitHandle
:
wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
然后在您的线程中:
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));
当主程序想提早唤醒线程时:
wakeUpEvent.Set();
注意:您可以将事件设置为自动重置或手动重置。自动重置意味着一旦WaitOne从事件中返回,它将把它设置回没有信号的状态。如果您处于循环中并且发出多次信号,这将很有用。
关于multithreading - 在.NET中启动 sleep 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260047/