我想检查进程是否已经结束,然后执行下一条语句

i want to check if the process has ended, and then execute next ststements

第二段不等第一段结束再开始。特别是在第一块将产生 anonimous.xml 之前,第二块正在尝试使用 xml.I 尝试 p.WaitForExit()。但它显示错误。请告诉我应该写什么

ProcessStartInfo p = new ProcessStartInfo();
            p.FileName = "cmd.exe";
            p.Arguments = @"/c C:\Users0117174\Downloads\Metrics\Metrics.exe /Solution:"+ BrowsedFolder+ @" /out:C:\Users0117174\source\Report1.xml";

            p.WindowStyle = ProcessWindowStyle.Hidden;
            Process.Start(p);
            Thread.Sleep(5000);
            //p.WaitForExit();

            parseXmlFile();

您将用于启动进程的结构与实际进程本身混淆了。

        ProcessStartInfo pi = new ProcessStartInfo(); <-- This describes HOW you want the process to start
        pi.FileName = "cmd.exe";
        pi.Arguments = @"/c C:\Users0117174\Downloads\Metrics\Metrics.exe /Solution:"+ BrowsedFolder+ @" /out:C:\Users0117174\source\Report1.xml";

        pi.WindowStyle = ProcessWindowStyle.Hidden;
        var p = Process.Start(pi);  <-- This is WHERE you create the process
        Thread.Sleep(5000);
        p.WaitForExit(); // Now you can wait for the process to exit

        parseXmlFile();

您可以将一个新的进程对象与您的进程调用相关联,并像下面的代码一样等待它。您可以查看 this 了解有关 Process.Start() 方法的更多详细信息。

ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "cmd.exe";
p.Arguments = @"/c C:\Users0117174\Downloads\Metrics\Metrics.exe /Solution:"+ BrowsedFolder+ @" /out:C:\Users0117174\source\Report1.xml";

p.WindowStyle = ProcessWindowStyle.Hidden;
Process process = Process.Start(p);
//Thread.Sleep(5000);
process .WaitForExit();

parseXmlFile();