Interceptar ESC sem remover outras teclas pressionadas do buffer

Eu tenho um aplicativo de console que solicita ao usuário várias entradas. Eu gostaria que o usuário fosse capaz de pressionar escape após qualquer solicitação para cancelar a operação.

Algo como:

<code>if (Console.ReadKey().Key != ConsoleKey.Escape) {
  string input = Console.ReadLine();
  ...
}
</code>

O problema com isso, no entanto, é que se uma tecla diferente de escape for pressionada, ela não fará parte da entrada (retornada deReadLine).

Existe uma maneira de "espiar" a próxima chave, ou fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion