Процессы, запущенные через Process.Start
, похоже, имеют задержку примерно в 26 секунд, когда порожденный процесс («дочерний») запускает больше новых процессов («внуков») - я пытаюсь найти способ решить эту проблемувопрос.В частности, это происходит, когда исходный процесс («родительский») является веб-сайтом ASP.Net или службой Windows (пробовал оба).
Мы пытаемся запустить средство командной строки на стороне сервера для сбора информации, внесения изменений в файловую систему и продолжения работы с другими процессами после завершения «потомка».При создании «потомка» напрямую через командную строку задержка отсутствует, а при определенных параметрах командной строки «потомок» не порождает новые процессы и задержка отсутствует.Однако с другими параметрами «потомок» порождает «внуков» (тот же исполняемый файл, что и он сам, но мы не можем изменить его код) и, похоже, задерживается на 25–30 секунд (обычно 26 секунд) до того, как первый процесс завершится.запущен, а затем работает нормально.
Я пытался изменить свойства UseShellExecute
, свойства CreateNoWindow
и WindowStyle
, но безрезультатно.ErrorDialog
и свойства RedirectStandard*
имеют значение false.
Я использую следующий код:
using (Process p = new Process())
{
p.StartInfo = new ProcessStartInfo(exePath, args)
{
WorkingDirectory = workingDirectory,
UseShellExecute = true,
CreateNoWindow = true,
};
p.Start();
p.WaitForExit();
}
О, я не думаю, что это имеет значение, поскольку явидел проблему, на которую ссылаются в другом месте (но нет решений), но exePath, который я использую, указывает на git.exe msysgit.