2012-10-28 3 views
0

C# 코드에서 하나의 프로세스를 시작한 다음 실행할 다른 실행 파일 두 개를 할당하려고합니다. 이것이 좋은 접근 방법인지 확실하지 않습니다. 내가 프로세스의 두 인스턴스를 생성하고 같은 실행에 각각 대응하는 실행 파일 할당해야합니다,프로세스 내에서 2 개의 실행 파일 실행

ProcessStartInfo pi = new ProcessStartInfo(); 

pi.UseShellExecute = true; 
pi.Verb = "runas"; 
pi.FileName = "cmd.exe"; 
pi.WorkingDirectory = Environment.CurrentDirectory; 

Process p = new Process(); 
p.StartInfo = pi; 
p.Start(); 

ProcessStartInfo p2 = new ProcessStartInfo(); 

p2.FileName = "notepad.exe"; 
p2.Verb = "runas"; 

p.StartInfo = p2; 

p.Start(); 

Console.ReadKey(); 

대신이 일 : 제 1보기 첫번째에게에

Process p1 = Process.Start("cmd.exe"); 
Process p2 = Process.Start("notepad.exe"); 

를이 코드입니다 접근 방식은 두 개가 아닌 하나의 프로세스를 사용하기 때문에 두 번째 프로세스보다 나을 것 같습니다. 따라서 적은 메모리와 적은 코드를 필요로하지만 같은 프로세스에서 실행 가능한 두 개의 다른 실행 파일은 저에게 이상하게 보입니다.

가장 적합한 방법과 올바른 방법에 대한 의견을 알려주세요.

감사합니다.

+0

어떻게 다른가요? exe를 시작하는 것은 프로세스를 만드는 것입니다. – James

+0

StartInfo를 변경할 수없는 이유를 모르겠습니다. 혼란 스러울뿐입니다. – ziya

답변

4

첫 번째 방법은 생각만큼 많은 리소스를 절약하지 않기 때문에 두 번째 방법이 더 좋습니다.

C#의 Process 클래스는 프로세스를 시작/중지/쿼리하는 Win32 함수를 감싸는 래퍼 일 뿐이며 매우 가볍습니다. 실제 실행중인 프로세스은 완전히 응용 프로그램 외부에 있습니다. 두 경우 모두 C# 프로그램이 두 개의 추가 프로세스를 시작합니다. 유일한 차이점은 첫 번째 접근 방식에서 프로세스에 대한 유용한 정보 (상태, PID, I/O 핸들 등)를 모두 버리는 것입니다.