如果线程正在休眠,另一个线程线程将如何调用threadA来启动? 如果可能,请提供一个例子。
答案 0 :(得分:6)
您需要创建EventWaitHandle并使用WaitOne暂停,而不是睡觉。
当您希望线程提前唤醒时,您只需将事件设置为发信号即可。
首先创建EventWaitHandle
:
wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
然后在你的主题中:
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));
当主程序想要提前唤醒线程时
wakeUpEvent.Set();
注意:您可以将事件设置为自动重置或手动重置。自动重置意味着一旦WaitOne从事件返回,它将把它设置回非信号。如果您处于循环中且多次发出信号,这将非常有用。
答案 1 :(得分:1)
可以通过等待WaitObject并让另一个线程调用Set方法来启动线程。查看WaitHandle.WaitOne method。
Here's文章也可能有所帮助。