Search code examples
c#visual-studio-2010readlinedo-whileconsole.readkey

How to keep checking if a user presses esc while Reading lines?


I want to keep reading lines of the user, but when this user presses on escape I want it to stop. But how can I keep reading single keys (for the escape), while meanwhile reading lines? I hope the question will be more clear after giving my code:

int number;
do
{
      string a = Console.ReadLine();
      try
      {
          Int32.TryParse(a, out number);
      }
      catch
      {
          Console.WriteLine("I only accept int");
      }
      finally
      {
          Console.Writeline(number);
      }
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);

Solution

  • as you have written, you want to read lines until escape is pressed, but as your code says, you want to read only integers. Here's what I think is what you want,

            int number = 0;
            do
            {
                while (!Console.KeyAvailable)
                {
                    string a = Console.ReadLine();
                    bool bWriteNumber = false;
                    try
                    {
                        number = int.Parse(a);
                        bWriteNumber = true;
                    }
                    catch
                    {
                        Console.WriteLine("Sorry! I only accept int");
                    }
                    finally
                    {
                        if (bWriteNumber)
                            Console.WriteLine(number);
                    }
                }
            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);