Чтение стандартного вывода из процесса командной строки без перевода строки - PullRequest
2 голосов
/ 24 декабря 2011

Я пишу C # GUI Wrapper, который оборачивается вокруг исполняемого файла (который я НЕ МОГУТ изменить, потому что у меня нет исходного кода). Кажется, проблема, с которой я сталкиваюсь, связана с тем фактом, что исполняемый вывод не заканчивается символом «новой строки».

Вместо этого .exe начинает работать и ожидает ввода пользователя (s = состояние, q = выход и т. Д.).

Я потратил много времени на исследование различных способов чтения StdOut, один с асинхронным чтением и прослушиванием событий, а другой - с отдельными потоками, опрашивающими StdOut и StdErr и вызывающими события в потоке пользовательского интерфейса, который обновляет текстовое окно.

К сожалению, ни один из этих двух методов, похоже, не работает, поскольку в обоих случаях - процесс не вызывает события до последней строки вывода (той, которая не имеет «новой строки» в конце), которая отображается только тогда, когда приложение закрывается.

Кроме того, я не могу отправлять ему команды и записывать его в StandardInput. Я следовал типичному совету отключения ShellExecute, перенаправления ввода и т. Д. *

Я попытался отправить и строку, и символ, и шестнадцатеричное представление символа в виде Write () и WriteLine (), но ни один из них не работает.

Есть идеи?

...