Performing some action while waiting for a key to be pressed in .NET console applications

You can wait for the user to press some button in a .NET console application using the Console.ReadKey() method. That’s simple and easy to use, but occasionally you might want to perform some action while waiting for the user to press a key.

The KeyAvailable property of the Console object helps you achieve just that.

The following code sample will print a message every second that passes without you pressing a key. After that the while loop exits and the console window will close since that is the end of this simple application:

static void Main(string[] args)
{
	RunWaitingForKeyPressedSample();
}

private static void RunWaitingForKeyPressedSample()
{
	int counter = 0;
	while (!Console.KeyAvailable)
	{
		Thread.Sleep(1000);
		counter++;
		Debug.WriteLine("I've been waiting for you to press a key for {0} seconds...", counter);
	}
	Debug.WriteLine("Finally...");
}

Here’s an example output in the debug window:

I’ve been waiting for you to press a key for 1 seconds…
I’ve been waiting for you to press a key for 2 seconds…
I’ve been waiting for you to press a key for 3 seconds…
I’ve been waiting for you to press a key for 4 seconds…
I’ve been waiting for you to press a key for 5 seconds…
Finally…

View all various C# language feature related posts here.

Advertisement

About Andras Nemes
I'm a .NET/Java developer living and working in Stockholm, Sweden.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Elliot Balynn's Blog

A directory of wonderful thoughts

Software Engineering

Web development

Disparate Opinions

Various tidbits

chsakell's Blog

WEB APPLICATION DEVELOPMENT TUTORIALS WITH OPEN-SOURCE PROJECTS

Once Upon a Camayoc

Bite-size insight on Cyber Security for the not too technical.

%d bloggers like this: