在我点击'escape'键的程序中,我希望它立即注册,即使在睡眠期间也是如此。目前,在注册按键之前,它会一直等到睡眠声明结束。睡眠时间对程序很重要,因此不仅仅是添加暂停和等待用户输入。
<input id="input" placeholder="foo" />
编辑:澄清一下,睡眠的原因是我在一段时间间隔内重复执行动作。
答案 0 :(得分:1)
您可以检查是否通过了10秒,而不是在10秒钟内休眠,并执行此时需要完成的任何操作。这样循环就会不断检查按键。
#include <chrono>
...
auto time_between_work_periods = std::chrono::seconds(10);
auto next_work_period = std::chrono::steady_clock::now() + time_between_work_periods;
while (!ESCAPE) {
// Stop program when Escape is pressed
if (GetAsyncKeyState(VK_ESCAPE)) {
std::cout << "Exit triggered" << std::endl;
ESCAPE = true;
break;
}
if (std::chrono::steady_clock::now() > next_work_period) {
// do some work
next_work_period += time_between_work_periods;
}
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}