Одновременный вывод и ввод текста?

Добрый день.

В консольном приложении в любой момент выводится текст, так же активен ввод текста в консоль.
Когда пользователь набирает текст и в это время пишется сообщение, то получается примерно такой бред:
DrlaEZQC4pWd6m.png

Как реализовать параллельный вывод и ввод текста, чтобы на текст, который пользователь пишет, не писался выводимый текст?
  • Вопрос задан
  • 432 просмотра
Пригласить эксперта
Ответы на вопрос 2
Я так понимаю вывод происходит из другого потока ? Тогда нужно синхронизировать потоки, что то типа
lock(некая глобальная переменная)
{
      var top = Console.CursorTop;
      var left = Console.CursorLeft;

      Console.CursorTop = 0;
      Console.CursorLeft = 0;
                              
      Console.Write(DateTime.Now.ToShortDateString());

      Console.CursorTop = top;
      Console.CursorLeft = left;
}
Ответ написан
@Melz
Есть несколько способов.

1. Вы сохраняете ввод в буффер поштучно (ReadKey), не показывая его и потом все вместе перерисовываете. Грубо говоря, держите весь экран и пред. вывод в памяти и рисуете его каждый раз заново при нажатии клавиши. А-ля Telnet.
2. Как сказали выше, lock.
3. Пишете в отдельной консоли через общий файл, Named Pipe или консольными аргументами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы