当进程输出换行符或返回时使用BeginOutputReadLine

时间:2011-02-23 15:31:41

标签: c# process newline io-redirection

我使用Process()来执行名为“test.exe”的外部文件。

“test.exe”只打印一个字符串。 “abc \ n \ r xyz \ n”

我的目标是获取字符串并将每个字节转换为相应的ASCII码。

也就是说,我希望c#console中的输出如下所示, 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 :(得分:0)

如果使用BeginOutputReadLine,则字符串将不包含“行尾”字符(或其中一些字符)。

请参阅Capture output from unrelated process了解另一种捕获另一个进程输出的方法。在您的情况下,这可以更好地工作,因为您可以逐个字符地读取流。