0

我正在使用 wkhtmltopdf 从 asp.net mvc 站点生成一些 pdf。我在这里使用在另一个 SO 问题上找到的代码。这段代码存在一个问题,即有一个硬编码的 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(); 
4

1 回答 1

2

我不确定这是否符合您的想法。完成后将立即退出。60 秒是它完成的最大等待时间。

MSDN中所述

WaitForExit(Int32) 重载用于使当前线程等待,直到关联进程终止。此重载指示 Process 组件等待有限的时间以使进程退出。如果关联进程由于终止请求被拒绝而在间隔结束时没有退出,则将 false 返回到调用过程。您可以为毫秒指定一个负数(无限),并且 Process.WaitForExit(Int32) 的行为与 WaitForExit 重载相同。如果将 0(零)传递给该方法,则仅当进程已经退出时它才返回 true;否则,它立即返回 false。

(强调我的)

于 2012-07-24T15:12:28.770 回答