通过Process.Start
启动的进程似乎在生成进程(“子进程”)启动更多新进程(“孙子”)时似乎有大约26秒的延迟 - 我正在尝试找到解决这个问题的方法。特别是,当原始进程(“父”)是ASP.Net网站或Windows服务(尝试这两者)时,会发生这种情况。Process.Start生成更多新进程时速度较慢
我们正试图运行服务器端命令行工具来收集信息,在文件系统中进行修改,并在“子”完成时继续执行其他进程。当通过命令行直接创建“子”时,不会有任何延迟,并且对于某些命令行参数,“子”不会生成新进程,并且没有延迟。然而,对于其他参数,“孩子”会产生“孙子女”(与其自身相同的可执行文件,但我们无法修改其代码),并且在第一个过程之前似乎有25-30秒(通常为26秒)的延迟开始,然后正常运行。
我试过修改UseShellExecute
属性,CreateNoWindow
属性和WindowStyle
属性,没有任何效果。 ErrorDialog
和RedirectStandard*
属性是错误的。
我正在使用的代码如下:
using (Process p = new Process())
{
p.StartInfo = new ProcessStartInfo(exePath, args)
{
WorkingDirectory = workingDirectory,
UseShellExecute = true,
CreateNoWindow = true,
};
p.Start();
p.WaitForExit();
}
哦,我不认为它很重要,因为我见过其他地方引用的问题(但没有解决方案),但exePath我” m使用指向msysgit的git.exe。
盛大儿童进程?在框架中没有内置的类可以让你实现这个功能来避免所有这些产卵? – 2010-08-18 15:40:38
不幸的是,我启动了一个我们无法控制的exe文件,它选择启动自己的新进程,或者我不会遇到这个问题。 – 2010-08-18 18:14:20
您可以检查的另一件事是:当您将代码放入命令行应用程序并调用它时,它是否也很慢? – 2010-08-18 19:30:54