而不是睡觉,你将想要创建一个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从事件返回,它将把它设置回非信号.如果您处于循环中且多次发出信号,这将非常有用.
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |