C # - Говоря Process.Start, чтобы ждать, пока предыдущий экземпляр не закончил - PullRequest
1 голос
/ 17 июня 2011

В настоящее время я вызываю процесс, который импортирует параметры из текстового файла,

Хотя, когда читается одна строка текстового файла, он работает правильно, но вторая строка текстового файла выполняется сразу после.Есть ли способ сказать Process.Start, чтобы он дождался завершения предыдущей команды?

static void Main(string[] args)
{
    foreach (string exename in System.IO.File.ReadAllLines("test.txt"))
    {
        Process.Start("test.exe", "\"" + exename + "\"");
    }

}

Ответы [ 3 ]

6 голосов
/ 17 июня 2011
static void Main(string[] args)
{
    foreach (string exename in System.IO.File.ReadAllLines("test.txt"))
    {
        Process.Start("test.exe", "\"" + exename + "\"").WaitForExit();
    }

}

Документально подтверждено на MSDN .Я обычно гуглю "MSDN [class/method/property]".В этом случае вы могли бы гуглить "msdn process class" и нашли бы метод.

1 голос
/ 17 июня 2011

Полагаю, вам нужно добавить команду .WaitForExit () в конце вашего оператора, вот так:

Process.Start("test.exe", "\"" + exename + "\"").WaitForExit();

Однако это будет бесконечное ожидание (обычно это плохо). Если вы хотите добавить тайм-аут, вы можете использовать перегрузку метода следующим образом:

Process.Start("test.exe", "\"" + exename + "\"").WaitForExit(30000);

30 000 - это 30 секунд (целое число - миллисекунды).

0 голосов
/ 17 июня 2011

Вы можете увидеть, был ли запущенный вами процесс найден через GetProcesses , если не попытаться снова через фиксированный интервал перед запуском второго процесса

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