Используйте BeginOutputReadLine, когда процесс выводит новую строку или возвращает - PullRequest
1 голос
/ 23 февраля 2011

Я использовал Process () для запуска внешнего файла с именем «test.exe».

"test.exe" печатает только строку. "abc \ n \ r xyz \ n"

Моя цель - получить строку и превратить каждый байт в соответствующий код ASCII.

То есть, я ожидаю, что выходные данные в моей консоли c # будут такими, как показано ниже, 97 98 99 32 10 32 13 32 120 121 122 10

Но когда я использовал BeginOutputReadLine для получения вывода test.exe, \ n и \ r были чередованы.

В результате я получил только 97 98 99 32 32 32 120 121 122

Наконец, я не хочу использовать синхронизированные способы, такие как Read, ReadLine и ReadToEnd. Есть ли способ получить то, что я хочу ??

Спасибо!

Собственно, я создаю backgroundWorker для работы с внешним процессом test.exe. У меня есть proc_DataReceived и backgroundWorker_Build_ProgressChanged ...

соответствующий код, как показано ниже
http://codepad.org/Gmq1XqXb
весь код, как показано ниже
http://codepad.org/k7VpWynu

(Я новичок в stackoverflow. Я вставил свой код в codepad.org, прежде чем узнал, как форматировать код здесь.)

1 Ответ

0 голосов
/ 03 марта 2011

Если вы используете BeginOutputReadLine, строка не будет содержать символы «конца строки» (или некоторые из них).

См. Захват выходных данных от несвязанного процесса , чтобы узнать о другом способе захвата выходных данных другого процесса. Это будет работать лучше в вашем случае, так как вы можете читать поток символ за символом.

...