2つのexeプログラムを並列実行しようとしています。私はそれらを開始し、それらが完了するのを待ってから続行します。次に例を示します。2つの実行ファイルを並列に実行する
static void Main(string[] args)
{
ProcessStartInfo proc1Info = new ProcessStartInfo("Testexe.exe");
proc1Info.ErrorDialog = false;
proc1Info.UseShellExecute = false;
proc1Info.RedirectStandardOutput = true;
proc1Info.RedirectStandardError = true;
proc1Info.Arguments = "5000";
ProcessStartInfo proc2Info = new ProcessStartInfo("Testexe1.exe");
proc2Info.ErrorDialog = false;
proc2Info.UseShellExecute = false;
proc2Info.RedirectStandardOutput = true;
proc2Info.RedirectStandardError = true;
proc2Info.Arguments = "10000";
Console.WriteLine("Start Proc 1");
Process proc1 = new Process();
proc1.StartInfo = proc1Info;
var task1 = Task.Factory.StartNew(() => proc1.Start());
Console.WriteLine("Start Proc 2");
Process proc2 = new Process();
proc2.StartInfo = proc2Info;
var task2 = Task.Factory.StartNew(() => proc2.Start());
Console.WriteLine("Wait for tasks");
Task.WaitAll(task1, task2);
Console.WriteLine("Procs complete");
}
最初procは5秒と10秒のための第二PROCをスリープ状態になるだろう。私はprocsが開始した2つのメッセージと "タスクを待つ"というメッセージを見ることを期待していました。その後10秒後に "Procs complete"と表示されます。しかし、すぐに「Procs complete」と表示されます。
タスクマネージャは、Procs completeが表示されている間にprocsが実行されていることを示します。
したがって、1つのプログラムから2つの別々の実行可能プログラムを起動し、並列実行してから、処理を続ける前に完了するのを待つ方法はありますか?溶液実測
解決策が見つかりました。 "proc1.WatForExit()"と "proc2.WaitForExit()"を使用します。 – fldiver