これに対する解決策は、次を追加してマルチスレッド開始を使用することです。
System.Threading の使用;
次に、次のコードを見てください。
Process process = new Process();
process.StartInfo = new ProcessStartInfo("app.exe");
process.StartInfo.WorkingDirectory = "";
process.StartInfo.Arguments = "some arguments";
//プロセスを開始する新しいスレッドを開始するため、WaitForExit を呼び出してもメイン スレッドがフリーズしません
Thread th= new Thread(() =>
{
process.Start();
process.WaitForExit();
});
th.Start();
複数のプロセスを連続して実行したい場合は、プロセスのリストのようなものを使用する必要がある別のケースです。次のコードを参照してください。
List<Process> processes = new List<Process>();;
Process process = new Process();
process.StartInfo = new ProcessStartInfo("app.exe");
process.StartInfo.WorkingDirectory = "";
process.StartInfo.Arguments = "some arguments";
processes.Add(process);
// 別のものを手動で追加しますが、たとえばループを使用できます
Process process2 = new Process();
process.StartInfo = new ProcessStartInfo("app.exe");
process.StartInfo.WorkingDirectory = "";
process.StartInfo.Arguments = "some arguments";
processes.Add(process2);
// 次に、スレッドを介してそれらを開始し、2 番目のプロセスは、UI をブロックすることなく最初のプロセスが終了するまで待機します
Thread th= new Thread(() =>
{
for (int i = 0; i < processes.Count; i++)
{
processes[i].Start();
processes[i].WaitForExit();
}
});
th.Start();