在.NET中启动一个休眠线程

时间:2010-02-14 03:25:04

标签: multithreading

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

2 个答案:

答案 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文章也可能有所帮助。