这是我用来从 c# 代码运行 extern 可执行文件(非托管)的代码:
static void Solve()
{
Process newProc = new Process();
newProc.StartInfo.WorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Data");
newProc.StartInfo.FileName = "solver.exe";
newProc.StartInfo.CreateNoWindow = true;
newProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
try
{
newProc.Start();
newProc.WaitForExit();
}
catch (Exception e)
{
StreamWriter errorReporter = new StreamWriter("ErrorLog.txt", true);
errorReporter.WriteLine(message);
errorReporter.Close();
}
newProc.Close();
}
在我的情况下,如果我手动启动求解器,它的工作时间约为 30 秒。solver.exe 操作的结果是一个文件。但是当我从代码中调用它时,它几乎同时退出并且什么都不做。没有输出来自它,没有生成输出文件。
此外,进程已正确启动,不会引发任何错误。上面的代码有什么问题还是我应该从检查solver.exe开始?