我搜索了互联网和这个网站以寻找我的问题的答案,但无济于事。我完全没有想法,迫切需要答案!
问题:
当我从 .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 Ultimate)上进行了测试,结果相同。我正在为这个特定的代码库使用 .NET 3.5 SP1。
任何帮助将不胜感激!