Как выполнить команду через командную строку и дождаться ее выполнения
Я пытаюсь выполнить команду через командную строку, а затем выполнить другую команду (не в cmd), которая зависит от результата предыдущей команды.
Проблема в том, что первая команда занимает около 2 минут до конца, а вторая команда не будет "ждать" для завершения первого.
Как заставить вторую команду ждать, пока не закончится первый?
Спасибо заранее!
public void runCmd(){
String command = @"/k java -jar myJava.jar";
ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe");
cmdsi.Arguments = command;
Process cmd = Process.Start(cmdsi);
}
.
.
.
runCmd(); //first command, takes 2 minutes to finish
MessageBox.Show("This Should popup only when runCmd() finishes");
Ответы
Ответ 1
Используйте метод Process.WaitForExit:
public void runCmd()
{
String command = @"/k java -jar myJava.jar";
ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe");
cmdsi.Arguments = command;
Process cmd = Process.Start(cmdsi);
cmd.WaitForExit();
}
.
.
.
runCmd();
MessageBox.Show("This Should popup only when runCmd() finishes");
Ответ 2
Вы можете использовать WaitForExit().
Примечание:
-
WaitForExit(int milliseconds)
, чтобы подождать указанное количество миллисекунд для завершения процесса.
-
WaitForExit()
ждать неограниченное время для завершения связанного процесса.
public void runCmd()
{
String command = @"/k java -jar myJava.jar";
ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe");
cmdsi.Arguments = command;
Process cmd = Process.Start(cmdsi);
cmd.WaitForExit(); //wait indefinitely for the associated process to exit.
}
.
.
.
runCmd(); //first command, takes 2 minutes to finish
MessageBox.Show("This Should popup only when runCmd() finishes");
Ответ 3
Вы можете использовать метод Process.WaitForExit()
;
Поручает компоненту Process ждать бесконечно связанный процесс для выхода.
// Start the process with the info you specified.
// Call WaitForExit and then the using statement will close.
using(Process cmd = Process.Start(cmdsi))
{
cmd.WaitForExit();
}
Ответ 4
Использование процесса WaitForExit();
было бы лучшим, как заявили другие.
указание времени в миллисекундах для команды для выхода или неопределенности в соответствии с рекомендациями.