2012-10-28 78 views
0

我從C#代碼啓動一個進程,然後爲其分配兩個不同的可執行文件來運行。我不確定這是否是一個好方法。這是代碼:在一個進程中運行兩個可執行文件

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(); 

而不是做這個,我應該創建過程的兩個實例,並指定他們每個人的相應的可執行文件運行類似:

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句柄等)。

相關問題