【发布时间】:2016-11-23 22:11:28
【问题描述】:
我需要从我的 Windows 窗体应用程序中打开一个外部进程。更重要的是,我需要在应用程序运行期间执行几次。基本上,我在命令提示符下多次执行带有参数的 .exe 文件,但是我需要将文件夹更改为 .exe 所在的位置才能使其正常工作。 到目前为止,我是这样打开 cmd 的:
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
然后使用 process.WriteLine 向 CMD 提供命令。
process.StandardInput.WriteLine("Awin.exe -X " + filePath + "/" + fileNumber + " ID=\"" + id + "\"");
而且我不需要对几个 fileNumber 文件执行此操作。另外,我需要等待从输入开始的过程结束,然后再继续下一个。 有没有更好的方法来做到这一点,因为我没有从使用 process.WaitForExit 得到好的结果
【问题讨论】:
-
你是什么意思使用 process.WaitForExit 没有得到好的结果?订阅
Process.Exited事件是否会产生准确/可靠/等结果? -
我的意思是,在通知WaitForExit完成后,从cmd调用的Awin.exe仍然保持运行,虽然WaitForExit注册为完成了。
-
与 Process.Exited 事件的结果相同吗?否则,您可以获得 Awin.exe 的 ProcessID,当它退出时继续轮询进程,检查 ProcessID 是否仍然存在