我使用Process
类启动.exe,但是它将停止所有先前的线程,直到结束。如何启动流程并立即保留资源,以便我所有正在运行的方法都可以恢复工作?
我试图评论p.WaitForExit(60000);
并没有帮助。
private string startProcess(string fileName, string args)
{
string result;
Process p;
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = fileName;
psi.Arguments = args;
psi.WorkingDirectory = "...\\upload";
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.StandardOutputEncoding = System.Text.Encoding.UTF8;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
p = Process.Start(psi);
try
{
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit(60000);
if (p.ExitCode != 0)
throw new Exception("Program returned with error code " + p.ExitCode);
result = output.ToString();
}
catch (Exception ex)
{
result = ex.ToString();
}
finally
{
p.Close();
p.Dispose();
}
return result;
}
在我评论了WaitForExit,If语句和ExitCode和StandardOutput之后,线程正在按我的方式工作。