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