Одновременный вывод и ввод текста?
Я так понимаю вывод происходит из другого потока ? Тогда нужно синхронизировать потоки, что то типа 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;
}
Есть несколько способов.
1. Вы сохраняете ввод в буффер поштучно (ReadKey), не показывая его и потом все вместе перерисовываете. Грубо говоря, держите весь экран и пред. вывод в памяти и рисуете его каждый раз заново при нажатии клавиши. А-ля Telnet.
2. Как сказали выше, lock.
3. Пишете в отдельной консоли через общий файл, Named Pipe или консольными аргументами.