我試圖並行運行兩個exe程序。我想開始他們,等待他們完成,然後再繼續。這裏是一個例子:並行運行兩個可執行文件
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");
}
第一個過程將睡5秒,第二個過程10秒。我期望看到procs已經開始的兩條消息和「等待任務」的消息。然後10秒後看到「Procs complete」。但是,我立即看到「Procs完成」。
任務管理器顯示在「Procs complete」顯示時運行的procs。
那麼,如何從單個程序啓動兩個單獨的可執行程序,並行運行並等待它們完成後再繼續?
找到解決方案。使用「proc1.WatForExit()」和「proc2.WaitForExit()」。 – fldiver