我目前正在运行以下代码,以测试外部应用程序是否实际上正在使用我的 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 窗口中之前仍然需要等待一分钟。不知道它在做什么。