【发布时间】:2011-02-23 15:31:41
【问题描述】:
我使用 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。)
【问题讨论】:
-
您好,如果您完全省略对 BeginOutputReadLine 的调用,它是如何工作的?无论如何,您应该能够捕获输出,因为您已经为 OutputDataReceived 设置了一个事件处理程序,那么它的行为如何?
-
我有相关的函数来处理这个问题,只是把它们粘贴在这里。我可以使用 backgroundworker 并获取 test.exe 的输出,但我不知道如何获取包含 \n 和 \r 的 test.exe 的“全部”输出。
标签: c# process newline io-redirection