'Program that writes numbers until I write a string to stop it

I am required to write a program that prints out numbers until I write in the console window a simple string "stop". The numbers are supposed to go on infinitely until the condition is met.

I tried:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace ConsoleApp3

{

    internal class Program

    {


        static void Main(string[] args)
        {
            for (int i = 0; i < 1000000000;)
            {
                Console.WriteLine(i);
                string a = Console.ReadLine();
                if (a == "stop")
                {
                    break;
                }
                i++;
            }
        }
    }
}

But, there is a delay waiting for my input every time, it's not constant.



Solution 1:[1]

You are asking for a non blocking console read. THats not simple.

One way is to peek to see if a key is available to read

int number = 0;
while (true)
{
   Console.WriteLine(number);
   number++;
   if (Console.KeyAvailable)
   {
       var s = Console.ReadLine();
       if (s == "stop")
          break;
   }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Roman Marusyk