C# 如何通过命令行执行命令并等待它完成

C# 如何通过命令行执行命令并等待它完成,c#,C#,我试图通过命令行执行一个命令,然后执行另一个命令(不在cmd中),这取决于前一个命令的结果。 问题是第一个命令大约需要2分钟才能结束,而第二个命令不会“等待”第一个命令结束。 如何保持第二个命令直到第一个命令结束 提前谢谢 public void runCmd(){ String command = @"/k java -jar myJava.jar"; ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe"); cmdsi.A

我试图通过命令行执行一个命令,然后执行另一个命令(不在cmd中),这取决于前一个命令的结果。 问题是第一个命令大约需要2分钟才能结束,而第二个命令不会“等待”第一个命令结束。 如何保持第二个命令直到第一个命令结束

提前谢谢

public void runCmd(){
  String command = @"/k java -jar myJava.jar";
  ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe");
  cmdsi.Arguments = command;
  Process cmd = Process.Start(cmdsi);
}
.
.
.
runCmd();           //first command, takes 2 minutes to finish
MessageBox.Show("This Should popup only when runCmd() finishes");
使用以下方法:

您可以使用WaitForExit()

注意

  • WaitForExit(int毫秒)
    等待指定的毫秒数以使关联进程退出
  • WaitForExit()
    无限期地等待关联进程退出
  • 你可以使用这个方法

    指示流程组件无限期地等待 要退出的关联进程


    使用
    WaitForExit()流程最好如其他人所述

    指定命令退出或无限期退出的时间(毫秒)。

    更短:

    Process.Start("cmd.exe", @"/k java -jar myJava.jar").WaitForExit();
    

    这是因为静态方法
    Process.Start
    返回一个
    Process
    对象。然后,您可以直接在其上调用
    WaitForExit
    方法,而无需将其存储在局部变量中。

    虽然此代码片段可以解决问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。@hellow解释补充道!谢谢
    public void runCmd()
    {
      String command = @"/k java -jar myJava.jar";
      ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe");
      cmdsi.Arguments = command;
      Process cmd = Process.Start(cmdsi);
      cmd.WaitForExit(); //wait indefinitely for the associated process to exit.
    }
    .
    .
    .
    runCmd();           //first command, takes 2 minutes to finish
    MessageBox.Show("This Should popup only when runCmd() finishes");
    
    // Start the process with the info you specified.
    // Call WaitForExit and then the using statement will close.
    using(Process cmd = Process.Start(cmdsi))
    {
          cmd.WaitForExit();
    }
    
    Process.Start("cmd.exe", @"/k java -jar myJava.jar").WaitForExit();