Process.Start和分配的资源

时间:2012-06-04 15:45:37

标签: c# .net process resources

我有这段代码:

Process pLight = new Process();
pLight.StartInfo.UseShellExecute = false;
pLight.StartInfo.FileName = "MyCommand.exe";
//
pLight.StartInfo.Arguments = "-myparam 0";
pLight.Start();
//
pLight.StartInfo.Arguments = "-myparam 1";
pLight.Start();
//
pLight.StartInfo.Arguments = "-myparam 2";
pLight.Start();

问题是:每次调用Start()时都会“创建”新进程?

来自Process.Start文档:

  

如果启动了进程资源,则返回true;如果没有启动新的进程资源,则返回false(例如,如果重用现有进程)。

但每次我调用此方法时都会得到 true 。那么如何重用相同的流程呢?有没有办法使用相同的过程运行多个命令?

2 个答案:

答案 0 :(得分:0)

如果我正确阅读了这一点,您只需创建ProcessStartInfo的新实例,然后如果有Process正在运行,则会重复使用该实例。

  

使用此重载通过指定ProcessStartInfo实例来启动进程资源。重载将资源与新的Process组件相关联。如果该进程已在运行,则不会启动其他进程资源。相反,重用现有流程资源,不会创建新的流程组件。在这种情况下,Start不会返回新的Process组件,而是向调用过程返回null。

http://msdn.microsoft.com/en-us/library/0w4h05yb.aspx(备注下的第一行)

答案 1 :(得分:-1)

pLightStartInfo = new ProcessStartInfo();
pLightStartInfo.UseShellExecute = false;
pLightStartInfo.FileName = "MyCommand.exe";
pLightStartInfo.Arguments = "-myparam 0";
pLightStart();
pLightStartInfo.Arguments = "-myparam 1";
pLightStart();
pLightStartInfo.Arguments = "-myparam 2";

Process pLight = new Process(pLightStartInfo); // first time so a new Process will be started

Process myOtherProcess = Process.Start(pLightStartInfo); // second time so myOtherProcess would reuse pLight, given original hadn't closed so both would be "pointing" at one MyCommand.exe

从未自己做过,但这就是它的意思。