等待Keypress(或)N秒过期

444*_*444 8 c# sleep timer keypress

假设我的控制台程序执行多个冗长的任务.在这些任务之间,我希望它暂停 - 无论是几秒钟还是直到任何按键被按下.(以先到者为准.)

这些标准很容易自行检查,但是当我尝试组合它们时它们拒绝相处:在ReadKey启动之前,计时机制暂停几秒钟,或者 Readkey完全阻塞线程直到满意为止.我怎样才能满足这两个条件?

les*_*ode 18

在C#4.0中执行此操作的一种方法:

Task.Factory.StartNew(() => Console.ReadKey()).Wait(TimeSpan.FromSeconds(5.0));
Run Code Online (Sandbox Code Playgroud)

  • 我应该补充一点,你应该只使用这种方法用于没有很多步骤的短期控制台应用程序,因为每次采用"超时"路径时,都会有一个僵尸线程等待按键.不要在10,000计数循环内尝试这个! (3认同)
  • 如果您需要知道来源,只需将“Wait”调用的结果保存到 bool 变量即可。如果超时,将返回 false,否则将返回 true(意味着有可用的密钥)。 (2认同)