Очистка входного потока - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте уважаемые! Пишу игрушку на C#, возникла проблема: в одном месте (в меню выбора уровней) нужно отобразить уровень, отображается он "в лоб", потому делается это медленно. Хотелось бы улучшить процесс вывода, но ничего лучше пока не придумал, да и не в этом дело. Проблема заключается в том, что меню выбора уровней у меня устроено так, что при нажатии стрелки вверх, номер уровня увеличивается на 1, и соответствующий номеру уровень выводится на экран. Аналогично работает и стрелка вниз. Если зажать любую из них программа начнёт подвисать (т.е. видимо пока программа выводит на экран карту, во входной поток записывается зажатая кнопка снова и снова. Таким образом, даже если после этого отпустить кнопку, программу будет ещё несколько секунд крутить карты). Как можно ограничить входной поток на время вывода карты? То бишь, пока карты выводится на экран во входной поток не должны попадать значения, а потом, когда она выведется, допустить одну. (действо происходит в консоли) Спасибо тем, кто прочитал

Решение задачи: «Очистка входного потока»

textual
Листинг программы
        // работает в отдельном потоке
        private void ProcessInput()
        {
            while (true)
            {
                if (Console.KeyAvailable)
                {
                    pressedKey = Console.ReadKey(true);
                    keyReaded = false;
                }
                else if (keyReaded)   // флаг keyReaded выставляется, если основной поток обработал нажатие
                {
                    pressedKey = new ConsoleKeyInfo();   // в таком случае мы очищаем последнюю нажатую клавишу
                }
                Thread.Sleep(1);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы