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。

しかし、このメソッドを呼び出すたびにtrueになります。では、どうすれば同じプロセスを再利用できますか? 同じプロセスを使用して複数のコマンドを実行する方法はありますか?

4

2 に答える 2

0

私がこれを正しく読んだ場合、あなたがする必要があるのは、の新しいインスタンスを作成することだけです。実行中のインスタンスがProcessStartInfoある場合はProcess、それを再利用します。

このオーバーロードを使用して、ProcessStartInfo インスタンスを指定してプロセス リソースを開始します。オーバーロードは、リソースを新しい Process コンポーネントに関連付けます。プロセスがすでに実行されている場合、追加のプロセス リソースは開始されません。代わりに、既存のプロセス リソースが再利用され、新しい 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 に答える