gpt4 book ai didi

c# - 过程输出捕获非常慢

转载 作者:行者123 更新时间:2023-11-30 12:29:25 25 4
gpt4 key购买 nike

我目前正在运行以下代码,以测试外部应用程序是否真的在使用我的一个 dll(更新程序代码)

 ProcessStartInfo psi = new ProcessStartInfo()
{
FileName = "Tasklist.exe",
Arguments = @"/m MyServices.dll",
CreateNoWindow = true,
RedirectStandardOutput = true,
UseShellExecute = false
};
Process p = new Process();
p.StartInfo = psi;
p.Start();
//debug output box, just to see everything that returns
txtOutput.Text = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Refresh();

if (txtOutput.Text.Contains("TestProgram.exe"))
MessageBox.Show("Found It");

现在,这段代码可以工作了!!!....但是它太慢了。我可以在 cmd 窗口中键入相同的命令并在十分之一秒内得到响应,但由于某种原因,该行 p.StandardOutput.ReadToEnd() 的暂停时间为 1 到5 分钟!!

现在是真正的问题:

有谁知道为什么会那么慢?或者可能如何修复它并使其速度快到可以接受的程度?

更新:更多数据

如果我使用 shell 窗口而不实际捕获输出,我可以在 shell 窗口中观察任务运行。它的运行速度稍快(非常快),但在输出开始出现在 shell 窗口中之前仍然需要等待一分钟。不知道它在做什么。

最佳答案

StreamReader.ReadToEnd 将阻塞,直到读取所有数据。尝试使用 Process.OutputDataReceived事件。

Process p = new Process();
p.StartInfo = psi;
p.OutputDataReceived += OutputHandler;
p.Start();

p.BeginOutputReadLine();

p.WaitForExit();
p.OutputDataReceived -= OutputHandler;

private void OutputHandler(object sender, DataReceivedEventArgs outLine)
{
txtOutput.Text += outLine.Data;
}

关于c# - 过程输出捕获非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com