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

Sof*_*eek 5 multithreading

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

Bri*_*ndy 6

而不是睡觉,你将想要创建一个EventWaitHandle并使用WaitOne超时.

当您希望线程提前唤醒时,您只需将事件设置为发出信号即可.

首先创建EventWaitHandle:

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset);
Run Code Online (Sandbox Code Playgroud)

然后在你的线程中:

wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0));
Run Code Online (Sandbox Code Playgroud)

当主程序想要提前唤醒线程时:

wakeUpEvent.Set();
Run Code Online (Sandbox Code Playgroud)

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