0

C#コードから1つのプロセスを開始し、実行する2つの異なる実行可能ファイルを割り当てます。これが良いアプローチかどうかはわかりません。これはコードです:

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の2つのインスタンスを作成し、それぞれに対応する実行可能ファイルを割り当てて、次のようなものを実行する必要があります。

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

最初のビューでは、最初のアプローチは2番目のアプローチよりも優れているように見えます。これは、2つではなく1つのプロセスのみを使用しているため、メモリとコードは少なくなりますが、同じプロセスで2つの異なる実行可能ファイルを実行することは少し奇妙に見えます。 。

どのアプローチが最適で、正しいアプローチかについてのご意見をお聞かせください。

ありがとう !

4

1 に答える 1

4

最初のアプローチでは思ったほど多くのリソースを節約できないため、2番目のアプローチの方がおそらく優れています。

C#のProcessクラスは、プロセスを開始/停止/クエリするためのWin32関数の単なるラッパーであり、非常に軽量です。実際に実行されているプロセスは、完全にアプリケーションの外部にあります。どちらの場合も、C#プログラムは2つの追加プロセスを開始しています。唯一の違いは、最初のアプローチでは、プロセスに関して持っていた有用な情報(状態、PID、I / Oハンドルなど)をすべて破棄することです。

于 2012-10-28T13:57:40.610 に答える