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 实例并为每个实例分配相应的可执行文件以运行类似的东西:

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

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

请让我知道您对哪种方法是最好的和正确的方法的看法!

谢谢 !

4

1 回答 1

4

您的第二种方法可能更好,因为您的第一种方法节省的资源几乎没有您想象的那么多。

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

于 2012-10-28T13:57:40.610 回答