При использовании Console.ReadKey() на второй раз происходит задержка - C#
Формулировка задачи:
Всем доброго времени суток. Создаю простенькую игру в консоли типа тенниса. С помощью ReadKey() считываю нажатую клавишу (LeftArrow, RightArrow). Сам же ReadKey() находиться в цикле while. Проблема в следующем: при зажатии клавиши после первого прочтения клавиши происходит задержка (примерно 1 сек), а потом все нормально идет. Как можно решить данную проблему.
Решение задачи: «При использовании Console.ReadKey() на второй раз происходит задержка»
textual
Листинг программы
class Program
{
//Координаты объекта
static int x = 40;
const int y = 10;
//С помощью данной структуры будем получать информацию о нажатой клавиши
static ConsoleKeyInfo k = new ConsoleKeyInfo();
[STAThread]
static void Main(string[] args)
{
//Делаем курсор невидимым
Console.CursorVisible = false;
//Метод рисующий объект
Draw();
while (true)
{
//Стчитываем клавишу
k = Console.ReadKey(true);
//Определяем какая клавиша была нажата и в соответствии с этим изменяем координату х
if (k.Key == ConsoleKey.LeftArrow)
{
while (!Keyboard.IsKeyUp(Key.Left))
{
x--;
//Метод рисующий объект
Draw();
Thread.Sleep(30);
}
k = new ConsoleKeyInfo();
}
else if (k.Key == ConsoleKey.RightArrow)
{
while (!Keyboard.IsKeyUp(Key.Right))
{
x++;
//Метод рисующий объект
Draw();
Thread.Sleep(30);
}
k = new ConsoleKeyInfo();
}
}
}
//Метод рисовки
static void Draw()
{
//Очистить консоль
Console.Clear();
//Нарисовать объект в нужных координатах
Console.SetCursorPosition(x, y);
Console.Write('#');
}
}