решение для этого заключается в использовании многопоточности
начать с добавления:
с использованием 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);
// тогда вы запустите их, хотя ваш поток и второй процесс будут ждать, пока первый завершится, не блокируя пользовательский интерфейс
Thread th= new Thread(() =>
{
for (int i = 0; i < processes.Count; i++)
{
processes[i].Start();
processes[i].WaitForExit();
}
});
th.Start();