Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Console.KeyAvailable Property

Definition

Namespace:
System
Assemblies:
netstandard.dll, System.Console.dll
Assembly:
System.Console.dll
Assembly:
mscorlib.dll
Assembly:
netstandard.dll
Source:
Console.cs
Source:
Console.cs
Source:
Console.cs
Source:
Console.cs
Source:
Console.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Gets a value indicating whether a key press is available in the input stream.

public:
 static property bool KeyAvailable { bool get(); };
public static bool KeyAvailable { get; }
static member KeyAvailable : bool
Public Shared ReadOnly Property KeyAvailable As Boolean

Property Value

true if a key press is available; otherwise, false.

Exceptions

An I/O error occurred.

Standard input is redirected to a file instead of the keyboard.

Examples

The following example demonstrates how to use the KeyAvailable property to create a loop that runs until a key is pressed.

using System;
using System.Threading;

class Sample
{
 public static void Main()
 {
 ConsoleKeyInfo cki;

 do {
 Console.WriteLine("\nPress a key to display; press the 'x' key to quit.");

 // Your code could perform some useful task in the following loop. However,
 // for the sake of this example we'll merely pause for a quarter second.

 while (!Console.KeyAvailable)
 Thread.Sleep(250); // Loop until input is entered.

 cki = Console.ReadKey(true);
 Console.WriteLine("You pressed the '{0}' key.", cki.Key);
 } while(cki.Key != ConsoleKey.X);
 }
}
/*
This example produces results similar to the following:

Press a key to display; press the 'x' key to quit.
You pressed the 'H' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'E' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'PageUp' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'DownArrow' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'X' key.
*/
open System
open System.Threading

let mutable cki = Unchecked.defaultof<ConsoleKeyInfo>

while cki.Key <> ConsoleKey.X do
 printfn "\nPress a key to display; press the 'x' key to quit."

 // Your code could perform some useful task in the following loop. However,
 // for the sake of this example we'll merely pause for a quarter second.

 while not Console.KeyAvailable do
 Thread.Sleep 250 // Loop until input is entered.

 cki <- Console.ReadKey true
 printfn $"You pressed the '{cki.Key}' key."


// This example produces results similar to the following:
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'H' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'E' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'PageUp' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'DownArrow' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'X' key.
Imports System.Threading

Class Sample
 Public Shared Sub Main()
 Dim cki As ConsoleKeyInfo
 
 Do
 Console.WriteLine(vbCrLf & "Press a key to display; press the 'x' key to quit.")

 ' Your code could perform some useful task in the following loop. However, 
 ' for the sake of this example we'll merely pause for a quarter second.
 
 While Console.KeyAvailable = False
 Thread.Sleep(250) ' Loop until input is entered.
 End While
 cki = Console.ReadKey(True)
 Console.WriteLine("You pressed the '{0}' key.", cki.Key)
 Loop While cki.Key <> ConsoleKey.X
 End Sub 
End Class 
'This example produces results similar to the following:
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'H' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'E' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'PageUp' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'DownArrow' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'X' key.
'

Remarks

The property value is returned immediately; that is, the KeyAvailable property does not block input until a key press is available.

Use the KeyAvailable property in conjunction with only the ReadKey method, not the Read or ReadLine methods.

Applies to


Feedback

Was this page helpful?