在进程内运行两个可执行文件

时间:2012-10-28 13:49:01

标签: c# .net process

我从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实例,并为每个实例分配相应的可执行文件,而不是这样做:

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

在第一个视图中,第一种方法对我来说似乎比第二种方法更好,因为我只使用一个进程而不是两个进程,所以更少的内存和更少的代码但在同一进程中运行两个不同的可执行文件看起来有点对我来说很奇怪。

请告诉我您对哪种方法最好,哪种方法最合适的看法!

谢谢!

1 个答案:

答案 0 :(得分:4)

你的第二种方法可能更好,因为你的第一种方法并没有像你想象的那样节省相当多的资源。

C#中的Process类只是用于启动/停止/查询进程的Win32函数的包装器,并且非常轻量级。 实际运行进程完全在您的应用程序之外。在这两种情况下,您的C#程序都会启动另外两个进程。唯一的区别是,在您的第一种方法中,您丢弃了有关该过程的所有有用信息(它的状态,它的PID,它的I / O句柄等)。