等待cmd命令结束后再继续



我从命令窗口运行一个命令,如下所示:

    System.Diagnostics.Process process = new System.Diagnostics.Process();
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    startInfo.FileName = "cmd.exe";
    startInfo.Arguments = "/C " + command + "> " + userProfile + @"cmdoutput.txt";
    process.StartInfo = startInfo;
    process.Start();

下一行代码读取文本文件,并根据需要操作数据。但是,如果我不等待cmd进程结束,它将读取一个空的文本文件。我想到了:

  • 不使用文本文件

    • 由于我有其他限制,这不起作用,它确实需要放在文本文件中
  • 等待几秒钟

    • 我不知道这个命令需要多长时间,而且基于时间的解决方案通常都不好
  • 检查命令提示进程是否正在运行

    • 无论出于何种原因,用户可能正在运行另一个命令提示符

System.Diagnostics.Process类有一个方法WaitForExit。正如我理解你的问题,这应该是你想要的。

你应该能够做到,

process.Start();
process.WaitForExit();

如果需要,您还可以传递一个int超时。

当然,这是假设您正在运行的应用程序将在完成后退出。如果不是这样(请重新考虑!),您将不得不做其他事情,比如轮询。

最新更新