0

我有这段代码:

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。

但每次我调用这个方法时,我都会得到真实的。那么我怎样才能重用相同的过程呢?有没有办法使用同一进程运行多个命令?

4

2 回答 2

0

如果我没看错,你需要做的就是创建一个新的实例,ProcessStartInfo然后如果有一个Process正在运行,它会重用它。

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

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

于 2012-06-04T15:56:24.810 回答
-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

我自己从来没有做过,但这就是它的意思。

于 2012-06-04T16:22:03.440 回答