Я хочу запустить фоновую задачу, которая читает входные данные из TextReader и обрабатывает их по очереди. Я хочу, чтобы фоновая задача блокировалась, пока пользователь не введет текст в поле и не нажмет кнопку «Отправить». Есть ли какая-то разновидность TextReader, которая будет блокировать, пока текст не станет доступным, и позволит вам каким-то образом добавить больше текста в основной источник?
Я думал, что StreamReader и StreamWriter, указывающие на один и тот же MemoryStream, могут работать, но, похоже, это не так. StreamReader видит, что MemoryStream в начале пуст, и никогда больше не проверяет.
Я понимаю, что было бы проще написать метод ProcessLine () и вызывать его всякий раз, когда пользователь нажимает кнопку отправки. Однако я пытаюсь спроектировать архитектуру плагинов и хочу, чтобы плагины выглядели как старомодные консольные приложения с входным потоком и выходным потоком. Я хочу, чтобы входной поток плагина просто блокировался до тех пор, пока пользователь не нажмет кнопку отправки с некоторым вводимым текстом.