- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在控制台模式下运行应用程序时,会有一些行写入控制台。
现在我想以编程方式执行此操作。这是我使用的一些示例代码:MSDN on OutputDataReceived Event
private static StringBuilder _sortOutput = null;
var proc = new Process();
var info = new ProcessStartInfo();
info.FileName = @"C:\SomeApp.exe";
info.UseShellExecute = false;
info.WindowStyle = ProcessWindowStyle.Normal;
info.CreateNoWindow = false;
proc.StartInfo = info;
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
proc.OutputDataReceived += HandleOutputData;
proc.ErrorDataReceived += HandleOutputData;
proc.Start();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();
var exitCode = proc.ExitCode;
var output = _sortOutput.ToString();
private void HandleOutputData(object sender, DataReceivedEventArgs e)
{
_sortOutput.Append(e.Data);
}
但 DataReceivedEventArgs.Data 始终为 null,我无法取回在打开的控制台窗口中看到的结果。
如何接收输出?有办法实现吗?
更新
我也尝试直接读取 proc.StandardOutput
,但它没有产生任何数据。
最佳答案
正如其他人所发现的,存在一个错误,其中 _sortOutput
将为空。但不管怎样,你是完全正确的:e.Data
可以而且将会是 null!
事实上,当执行调用的 AsyncStreamReader 到达正在执行的标准输出的 EOF 时,您的处理程序应该总是被调用时 e.Data
等于 null redirected - 这将在您正在运行的进程退出时发生。当然,除非您先注销 OutputDataReceived 事件处理程序,或者取消异步输出重定向。
关于c# - 处理 RedirectStandardOutput 为空且 DataReceivedEventArgs.Data 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360756/
好的,这是我用来测试 RedirectStandardOutput 的一个简单的控制台应用程序的Process.StartInfo . foreach (c In [Enum].GetValu
背景 我正在为 node.js 应用程序编写一个 c# 包装器。在这个包装器中,我通过 Process.RedirectStandardOutput 连续读取标准输出。在类 ProcessManage
在我的 C# 代码中,我必须运行一些外部进程。这些可以是批处理文件或可执行文件。通过使 ProcessStartInfo 的 RedirectStandardOutput 为真,我将输出重定向到我自己
我在重定向应用程序的标准输出时遇到问题。这似乎是 .NET 中的某种错误。 我在跑 Live555ProxyServer但是即使启动的控制台确实有书面输出,我也没有得到任何输出。此代码适用于任何其他控
我有一个应用程序在命令窗口中调用另一个进程,并且该进程更新了输出到控制台窗口的统计信息。我认为这是一个相当简单的操作,但我似乎无法让它工作。我错过了什么吗? string assemblyLocati
在不重定向 StandardOutput 的情况下运行 ChkDsk 不会出现如下错误: var processStartInfo = new ProcessStartInfo(@"chkdsk.ex
我正在尝试使用 StreamReader 从进程读取输出数据,但 StreamReader 阻塞并且不会返回任何输出。 我的流程是这样的: ProcessStartInfo startInfo = n
我想要的只是将一个进程的标准输出重定向到一个文件。听起来很简单,但我尝试的一切都不起作用: 将 DOS 风格的重定向放在参数列表中(例如 param1 param2 > output.txt)不起作用
我们有一个服务,它启动一个进程并在服务停止时等待进程退出/服务用户调用停止(停止/终止服务启动的进程)。 偶尔,process.waitForExit(TimeSpan)挂起。 请注意,由 Servi
在控制台模式下运行应用程序时,会有一些行写入控制台。 现在我想以编程方式执行此操作。这是我使用的一些示例代码:MSDN on OutputDataReceived Event private stat
在我正在执行的 PowerShell 窗口中: Start-Process XXXXX.exe -ArgumentList "some valid arguments" -wait -redirect
我有一个 GUI 应用程序(在新进程中)执行“控制台”应用程序并解析输出。要重定向输出,我将 pConsole.StartInfo.RedirectStandardOutput 设置为 true。我还
我是一名优秀的程序员,十分优秀!