Process.Start
을 통해 시작된 프로세스는 생성 된 프로세스 ("자식")가 더 많은 새 프로세스 ("손자")를 시작할 때 약 26 초 지연되는 것으로 보입니다. 이 문제를 해결할 수있는 방법을 찾으십시오. 특히 원본 프로세스 ("부모")가 ASP.Net 웹 사이트 또는 Windows 서비스 (둘 모두 시도) 인 경우이 문제가 발생합니다.더 많은 새 프로세스를 생성 할 때 Process.Start가 느림
정보를 수집하고 파일 시스템을 수정하고 "자식"이 완료되면 다른 프로세스를 계속 진행하기 위해 서버 측 명령 줄 도구를 실행하려고합니다. 명령 줄을 통해 "자식"을 직접 만들면 지연이없고 특정 명령 줄 매개 변수로 "자식"이 새 프로세스를 생성하지 않고 지연이 없습니다. 그러나 다른 매개 변수를 사용하면 "자식"이 "손주"(동일한 실행 파일 자체이지만 코드를 수정할 수 없음)를 생성하고 첫 번째 프로세스가 완료되기 전에 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 I :
는 다음과 내가 사용하는 코드가 될 때 mysysgit의 git.exe에 포인트를 사용합니다.
그랜드 아이들 프로세스? 이 모든 기능을 피하기 위해이 기능을 구현할 수있는 프레임 워크에 기본 제공 클래스가 없습니까? –
불행히도, 우리가 제어 할 수없는 exe를 시작하고 자체 프로세스를 시작하려고하거나이 문제가 발생하지 않을 것입니다. –
확인할 수있는 또 다른 사항 : 코드를 명령 줄 응용 프로그램에 넣고 호출하면 속도가 느려 집니까? –