WaitForExit funktioniert nicht.

Mavericklp

Erfahrenes Mitglied
Moin moin zusammen,
ich habe von 2017 diese Frage schon hier im Forum gefunden, dieses bringt mich allerdings nicht weiter.

Ich habe eine Text Datei, in der Mehrere Programme stehen. Diese sollen nacheinander abgearbeitet werden. Allerdings wird der Befehl WaitForExit ignoriert. Wenn ich aber die Message Box drin lasse, wird das Programm erst weitergeführt, wenn die Message Box bestätigt wird.

C#:
foreach (string line in projectlines)
{
                string Programm = "";
    
                string[] lines = line.Split('|');
                if (lines.Count() > 1)
                {
                    tbStatus.Text += "Starte installation von: " + lines[0] + "\r\n";
                    tbStatus.Text += "Mit Folgenden Parameter: " + lines[3] + "\r\n";

                    if(lines[2] == "uni")
                    {
                        Programm = lines[4];
                    }

                    Process p = new Process();
                    p.StartInfo.FileName = ProgrammFoldername + Programm;
                    p.StartInfo.Arguments = lines[3];
                    p.Start();
                    p.WaitForExit();

                    string Details = "";
                    Details += "Programm: " + lines[0] + Environment.NewLine;

                    //MessageBox.Show(Details);
                }
                else
                {
                    MessageBox.Show(lines[0]);
                }
            }
            tbStatus.Text += "----------------------------------------------" + "\r\n";
            tbStatus.Text += "Ende installation: (" + DateTime.Now + ")";
            lblStatus.Text = "Fertig";
            lblStatus.BackColor = Color.LimeGreen;
        }
 
Ruft dein aufgerufenes Programm evtl. nur ein anderes auf und beendet sich direkt? Gerade bei Installern ist so etwas häufig, der erste Prozess läuft als dein User, und startet nach der Bestätigungsarie den eigentlichen Installationsprozess mit erhöhten Rechten.
 
Ausgehend von Endurionsbeitrag:
Dieses Verhalten gabs es auch in Office (weiß nicht obs bei den neueren immer noch so ist).
Wenn schon eine, z.B, Word, Instanz lief dann wurde diese herangezogen/mitverwendet.

jenachdem was du vorhast könntest du eventuell das Exited Ereignis von Process zu hilfe nehmen ( Process.Exited Event (System.Diagnostics) )
 

Neue Beiträge

Zurück