Console.KeyAvailable Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, указывающее, доступен ли нажатие клавиши во входном потоке.
public:
static property bool KeyAvailable { bool get(); };
public static bool KeyAvailable { get; }
static member KeyAvailable : bool
Public Shared ReadOnly Property KeyAvailable As Boolean
Значение свойства
true Значение , если клавиша доступна; falseв противном случае .
Исключения
Произошла ошибка ввода-вывода.
Стандартные входные данные перенаправляются в файл вместо клавиатуры.
Примеры
В следующем примере показано, как использовать KeyAvailable свойство для создания цикла, выполняющегося до нажатия клавиши.
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.
'
Комментарии
Значение свойства возвращается немедленно; То есть свойство не блокирует входные данные до тех пор, KeyAvailable пока нажатие клавиши не будет доступно.
KeyAvailable Используйте свойство в сочетании только с методомReadKey, а не с методами ReadReadLine.