- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 GUI 应用程序(在新进程中)执行“控制台”应用程序并解析输出。要重定向输出,我将 pConsole.StartInfo.RedirectStandardOutput 设置为 true。我还订阅了事件 pConsole.Exited。
我看到的问题是我必须在 Exited 事件处理程序中使用 Thread.Sleep() 来获取最后的数据。
我的 Exited 事件处理程序如下所示:
Thread.Sleep(100); // Wait for additional data (if any).
pConsole.OutputDataReceived -= new System.Diagnostics.DataReceivedEventHandler(this.localTerminal_DataAvailableEvent);
int exit = pConsole.ExitCode;
pConsole.Dispose();
pConsole = null;
似乎 Exited 事件在我最后一个 pConsole_DataAvailableEvent 之前执行。任何人都知道这是如何/为什么发生的?
我还使用互斥/锁来确保我的 Exited 事件在我开始执行下一个控制台应用程序之前完成。
最佳答案
问题几乎可以肯定是输出缓冲:进程退出,触发您的 Exited 事件,但一些输出数据仍在缓冲区中。您的 hack 在某些情况下可能会奏效,但其他方法可能更可靠。考虑:
1) 消除 Exited 事件处理程序,而是检查 OutputDataReceived 处理程序中的 Process.HasExited。
2) 不要使用 OutputDataReceived 处理程序,而只需调用 Process.StandardOutput 流上的 Read()。流关闭后进行后处理清理。
关于c# - pConsole.StartInfo.RedirectStandardOutput 和 pConsole.Exited 事件 (c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258339/
好的,这是我用来测试 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。我还
我是一名优秀的程序员,十分优秀!