我已经浏览了互联网和这个网站寻找我的问题的答案无济于事。我完全没有想法,渴望得到答案!
问题:
当我从.NET环境(使用Process.Start())运行特定处理器密集型可执行文件时,该过程最多需要五分钟才能完成。相反,当我从命令提示符(cmd.exe)运行具有相同参数的相同可执行文件时,它将在10-15秒内完成执行。我所做的一个观察是,在从.NET环境运行时,我的四个处理器内核之一被最大化了;我可以从输出窗口看到它执行速度非常慢。使用cmd.exe,似乎我的所有四个处理器核心都在共享负载,并且在输出窗口上飞过。另一个观察是csrss.exe在cmd.exe测试期间具有与我正在运行的可执行文件一样多的处理器利用率。从.NET(Process.Start)运行时,情况并非如此。
如果有必要,我可以在我调用Process.Start()的地方发布代码。我尝试过将UseShellExecute设置为true和false,重定向标准输入和输出等的各种组合。我根本无法将其固定下来。我已经在两台独立的机器(Windows Server 2008和Windows 7旗舰版)上测试了这个,结果相同。我正在使用.NET 3.5 SP1来实现这个特定的代码库。
非常感谢任何帮助!