Многопоточность в консольном приложении на C#?
Вынести логику работы программы в отдельный поток, а в основном работать интерактивно…
Пример с вызовом Console.WriteLine() из нескольких параллельных потоков — канонический пример, встречающийс в интернете на каждом углу, как иллюстрация многопоточности. Следовательно, мысль о блокировке stdin и stdout неверна. 

С другой стороны, возможно, ReadLine ведет себя по-другому. Тогда я соглашусь с предыдущим комментарием — нужно выносить бесконечный цикл в поток, а интерактивно работать в основном.