Может быть, какое-то дополнение для вашего понимания:
Проблема в том, что ваш внутренний цикл for блокирует цикл do-while.Условие do-while не проверяется до тех пор, пока цикл for не завершится.
Попробуйте использовать метод для проверки ввода ключа в цикле увеличения тактовой частоты.
Редактировать:Я не могу сказать, поможет ли простая проверка по нажатию клавиши, как указано в других ответах.Я предполагаю, что для этого потребуется программа, чтобы обнаружить нажатие клавиши как раз в тот момент, когда цикл for обрабатывается.Если вы не нажмете пробел в течение хотя бы одной секунды, маловероятно, что это сработает.
Подходящим вариантом может быть установка приращения часов в другой поток / задачу, которая не блокируетваш поток ввода.
Редактировать 2: Также вы должны знать, что отображаемое время задерживается на одну секунду в вашем примере, потому что вы сначала увеличиваете значение времени, затем ждете секунду и только затем отображаете увеличенное время,Если вы делаете это таким образом, вам следует подумать о том, чтобы сделать это так:
myclock.Tick();
myclock.displayTime();
// Increment and display first, then put thread to sleep
Thread.Sleep(1000);
Или, если вы хотите начать с нуля:
myclock.displayTime();
Thread.Sleep(1000);
myclock.Tick();