我正在使用wkhtmltopdf从asp.net mvc网站生成一些pdf。我正在使用另一个SO问题here上找到的代码。此代码存在问题,因为有一个硬编码的60秒等待该过程完成。我认为如果我们只需要一个触发器或信号来观察然后退出并读取输出就会有很大的改进。那么有人知道一种方法来听取wkhtmltopdf过程的响应吗?
// read the output here...
string output = p.StandardOutput.ReadToEnd();
// ...then wait n milliseconds for exit (as after exit, it can't read the output)
p.WaitForExit(60000);
// read the exit code, close process
int returnCode = p.ExitCode;
p.Close();
答案 0 :(得分:2)
我不确定你做的是你认为的那样。它会在完成后立即退出。 60秒是它完成的最长等待时间。
如MSDN
所述WaitForExit(Int32)重载用于创建当前线程 等到相关进程终止。 此过载指示 Process组件等待有限的时间进行处理 退出。如果关联的进程在结束时没有退出 interval因为拒绝终止请求,返回false 到调用程序。 您可以指定负数(无限) 对于毫秒,Process.WaitForExit(Int32)的行为相同 作为WaitForExit重载。如果将0(零)传递给方法,则为 仅当进程已退出时才返回true;否则,它 立即返回false。
(强调我的)