Я согласен с Джеймсом, другой альтернативой является «фальсификация» непрерывной работы программы. Это не будет работать со всеми сценариями, но вы можете установить таймер прямо перед отображением пользовательского ввода, а затем вычислить время между остановкой и «запуском» снова, когда пользователь что-то вводит.
Используйте это время для выполнения повторной функции определенное количество раз. Это полезно только в том случае, если у вас уже есть что-то в самом таймере, например, непрерывное сливающееся целое число каждые несколько секунд.
Пример:
Вы задаете пользователю вопрос, но хотите дать ему всего 5 секунд, чтобы ответить. Когда пользователь отвечает (нажимает ввод), программа подсчитывает время, которое ему потребовалось для ввода, если слишком долго, выдает одно сообщение, если под ограничением времени выдает другое.
Я только предлагаю этот метод, потому что многопоточность, в которую вы действительно хотите попасть, довольно продвинута.