我有一个fortran可执行文件,我正在尝试使用进程运行。 fortran可执行文件从用户请求文件,执行操作以找到解决方案,然后如果有多个解决方案,它将询问用户是否想要找到最佳解决方案。我在这里提供的代码似乎总是在我等待输入空闲时崩溃,因为似乎没有gui。我是新手使用流程,所以如果有人可以帮助我,那将不胜感激。
感谢。
编辑:我忘了提到fortran可执行文件生成文本文件后向用户提供结果。当我删除等待输入空闲时,它不再崩溃,但不再生成生成的文本文件。可执行文件无法正常运行吗?
Process exeProcess = new Process();
exeProcess.StartInfo.FileName = @"...\marcus12.exe";
exeProcess.StartInfo.UseShellExecute = false;
exeProcess.StartInfo.RedirectStandardError = true;
exeProcess.StartInfo.RedirectStandardInput = true;
exeProcess.StartInfo.RedirectStandardOutput = true;
exeProcess.Start();
//exeProcess.WaitForInputIdle();
exeProcess.StandardInput.WriteLine(Path.GetFileName(filePath));
//exeProcess.WaitForInputIdle();
exeProcess.StandardInput.WriteLine("Y");
exeProcess.WaitForExit();
答案 0 :(得分:0)
只需删除两条exeProcess.WaitForInputIdle();
行,在您的情况下不需要它们。
答案 1 :(得分:0)
当您启动的进程是带有消息循环的Windows应用程序时,使用WaitForInputIdle()。在您的情况下,它是简单的控制台应用程序。
因此,您只需要从代码中排除两个WaitForInputIdle()调用:
Process exeProcess = new Process();
exeProcess.StartInfo.FileName = @"...\marcus12.exe";
exeProcess.StartInfo.UseShellExecute = false;
exeProcess.StartInfo.RedirectStandardError = true;
exeProcess.StartInfo.RedirectStandardInput = true;
exeProcess.StartInfo.RedirectStandardOutput = true;
exeProcess.Start();
exeProcess.StandardInput.WriteLine(Path.GetFileName(filePath));
exeProcess.StandardInput.WriteLine("Y");
exeProcess.WaitForExit();