我试图并行运行两个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