Sascha Manns Ответов: 1

Как мне имплицировать ожидание внутри командной строки


В настоящее время я использую его для выполнения некоторых вещей в cmd.

string[] strCmdText = { "/C pdflatex letter_of_application.tex", "/C xelatex curriculum_vitae.tex", "/C biber curriculum_vitae.bcf", "/C xelatex curriculum_vitae.tex" };
            
            foreach (string cmd in strCmdText)
            {
                Process process = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                startInfo.FileName = "cmd.exe";
                startInfo.Arguments = cmd;
                process.StartInfo = startInfo;
                process.Start();
            }


Теперь проблема заключается в том, что если компилятор работает с этой строкой, он открывает 4 cmds и выполняет ее непосредственно.

Как я могу сказать ему, что он должен подождать, пока предыдущий процесс не закончится?

Что я уже пробовал:

<pre lang="c#">string[] strCmdText = { "/C pdflatex letter_of_application.tex", "/C xelatex curriculum_vitae.tex", "/C biber curriculum_vitae.bcf", "/C xelatex curriculum_vitae.tex" };
            
            foreach (string cmd in strCmdText)
            {
                Process process = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                startInfo.FileName = "cmd.exe";
                startInfo.Arguments = cmd;
                process.StartInfo = startInfo;
                process.Start();
            }

Perić Željko

https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.hasexited?view=netcore-3.1#System_Diagnostics_Process_HasExited

1 Ответов

Рейтинг:
6

OriginalGriff

Попробуй:

process.WaitForExit();


Sascha Manns

Большое спасибо. Это работает, как и ожидалось. :-)

OriginalGriff

Всегда пожалуйста!