Obecnie wywoluję proces, który importuje parametry z pliku tekstowego,

Wprawdzie odczytany jeden wiersz pliku tekstowego działa poprawnie, ale drugi wiersz pliku tekstowego jest wykonywany zaraz po nim. Czy istnieje sposób, aby powiedzieć Process.Start, aby poczekał na zakończenie poprzedniego polecenia?

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

}
1
Michael 17 czerwiec 2011, 18:15

3 odpowiedzi

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

}

Udokumentowane w MSDN. Zwykle wpisuję w Google „MSDN [class/method/property]”. W takim przypadku możesz wpisać w Google „msdn process class” i znaleźć metodę.

5
jgauffin 17 czerwiec 2011, 18:24

Uważam, że musisz dodać polecenie .WaitForExit() na końcu swojego oświadczenia:

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

Będzie to jednak nieskończone oczekiwanie (zazwyczaj zła rzecz). Jeśli chcesz dodać limit czasu, możesz użyć przeciążenia metody w następujący sposób:

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

30 000 reprezentuje 30 sekund (int to milisekundy).

1
IAmTimCorey 17 czerwiec 2011, 18:27

Możesz sprawdzić, czy właśnie uruchomiony proces został znaleziony przez GetProcesses, jeśli nie próbuj ponownie po ustalonym czasie przed uruchomieniem drugiego procesu

0
Ta01 17 czerwiec 2011, 18:22