user1502952 user1502952 - 1 year ago 215
C# Question

Checking if any key pressed in console application C#

I need to check if any key is pressed in a console application. The key can be any key in the keyboard. Something like:


//Cleanup the resources used


I had come up with this:

ConsoleKeyInfo cki;

Console.WriteLine("key pressed");

It works well with all keys except modifier keys - how can I check these keys?

Answer Source

This can help you:

Console.WriteLine("Press any key to stop");
do {
    while (! Console.KeyAvailable) {
        // Do something
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);

If you want to use it in an if, you can try this:

ConsoleKeyInfo cki;
while (true)
   cki = Console.ReadKey();
   if (cki.Key == ConsoleKey.Escape)

For any key is very simple: remove the if.

As @DawidFerenczy mentioned we have to note that Console.ReadKey() is blocking. It stops the execution and waits until a key is pressed. Depending on the context, this may (not) be handy.

If you need to not block the execution, just test Console.KeyAvailable. It will contain true if a key was pressed, otherwise false.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download