我有这段代码:
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 。那么如何重用相同的流程呢?有没有办法使用相同的过程运行多个命令?
答案 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
从未自己做过,但这就是它的意思。