The problem is that the timer Elapsed event is raised on the thread that started it - the same thread that calls Console.Read.
Unfortunately, Console.Read is a
blocking call - it doesn't return until the user input is complete, and that means the user pressing ENTER.
What you need to do is move the Timer onto a different thread so that it can operate independently of your main code. But ... that won't work for you either because your Elapsed code is also trying to read input from the user and ReadLine is also a blocking call. So it won't continue until the user types ENTER either! And you are looping forever inside the Elapsed method, so that will never end! But to make matters worse, you then have two competing threads trying to read from the same input, so what which one is going to get what is anybody's guess!
What you are trying to do is surprisingly complex: you will need to stop using blocking calls completely: which means you have to start thinking very, very differently.
This can be done as a console app:
How to read what user wrote (without hitting enter) - console C# - Stack Overflow[
^] but it's pretty advanced stuff. I'd strongly suggest that you leave this for a week or two when you get to Windows applications instead of Console ones which are much, much more suitable for multithreaded work, timers, and non-blocking inputs!