Interceptar ESC sin eliminar otras pulsaciones de tecla del búfer

Tengo una aplicación de consola que solicita al usuario varias entradas. Me gustaría que el usuario pueda presionar escape después de cualquier solicitud para cancelar la operación.

Algo como:

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

El problema con esto, sin embargo, es que si se presiona una tecla que no sea escape, no será parte de la entrada (devuelta desdeReadLine).

¿Hay una manera de "asomarse" a la siguiente clave, o hacer esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta