From the documentation for Console.ReadKey() :
The ReadKey method waits, that is, blocks the thread issuing the ReadKey until a key or function key is pressed.
What he actually does is get a lock on Console.InternalSyncObject , which prevents further operations on the console.
The Console.ReadLine() method does not block the stream in this way.
Reading this article I assume you have .NET 4.5 installed?
source share