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 + "\"");
}
}
3 odpowiedzi
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ę.
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).
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
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.