Как отложить выполнение команды - PullRequest
0 голосов
/ 05 августа 2011

Как заставить программу ждать завершения команды оболочки?Например:

Shell("format")
Console.WriteLine("Finished")

В этом примере сначала пишется строка «Завершено» и только после этого запускается функция оболочки.Как сначала запустить функцию оболочки и только после ее завершения написать строку «Готово»?

Ответы [ 6 ]

3 голосов
/ 05 августа 2011

Shell может принимать параметр, определяющий, ждать или нет завершения программы:

Shell("format", Wait:=True)
2 голосов
/ 05 августа 2011

Использование процессов и cmd.exe

var psi = new ProcessStartInfo("cmd.exe");
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.Arguments = @"/C cd C:\windows\system32 && dir";
var proc = Process.Start(psi);
proc.WaitForExit()

Console.WriteLine("Finished!");

Аргумент /C в начале любой команды, которую вы хотите выполнить, означает, что оболочка выполнит эту команду и завершит работу после ее завершения.

1 голос
/ 05 августа 2011

Посмотрите на Класс процесса . Затем используйте метод Process.WaitForExit , чтобы дождаться завершения процесса, созданного вами.

1 голос
/ 05 августа 2011

Может быть, вам нужно что-то вроде этого:

System.Diagnostics.Process.Start("C:\bla.exe").WaitForExit();
0 голосов
/ 05 августа 2011

Выполните быстрый поиск в Интернете по запросу «Microsoft.VisualBasic.Interaction.Shell».

Я нашел это: MSDN microsoft.visualbasic.interaction.shell

Itговорит мне:

Параметры

Подождите

Type: System.Boolean

Необязательно.Boolean.Значение, указывающее, должна ли функция Shell ожидать завершения программы.Если Ожидание опущено, Shell использует False.

0 голосов
/ 05 августа 2011

Я думаю, вы можете использовать Процесс класс.

Создайте экземпляр процесса и присоедините обработчик событий, когда процесс существует.

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited.aspx#Y200

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...