我有一个C#GUI包装器,该包装器使用Process.Start()调用各种第三方python脚本(这些脚本无法更改)。相关代码:
Process process = new Process();
process.StartInfo.FileName = FileParserConstants.PYTHON_PATH; // Path to python exe
process.StartInfo.Arguments = FileParserConstants.SCRIPT_PATH + sInput; // Path to scripts with input script + arguments
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.WaitForExit();
return process.StandardOutput.ReadToEnd().Trim();
这似乎相对简单,并且当我的C#项目类型设置为“ Windows应用程序”时可以使用。但是,切换到“控制台应用程序”后,尽管没有错误,但python脚本无法按预期运行。
也就是说,有一个Python脚本可以接受参数并调用exe来更改给定参数的设置。当从设置为控制台应用程序的项目中调用python脚本时,在python内调用的exe内会出现“ OSError:[WinError 6]句柄无效”(此错误在python脚本内处理并记录)。同样,当从设置为Windows应用程序的项目中调用脚本时,脚本可以正常运行。
由于与问题无关的原因,我被迫将该项目作为控制台应用程序,并且无法找到有关两个项目类型之间的差异以及可能导致Process行为不同的文档。