通過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