我正在尝试使用 wkhtmltoimage 栅格化地图。我正在启动一个新进程并将获取所需图像所需的命令行参数传递给它。
当进程开始时,我目前正遭受很长时间的停顿。我已启用显示窗口以查看是否有任何与对话框相关的活动需要用户输入但没有。该进程以 0% CPU 运行 2 到 3 分钟。在命令上执行相同的命令需要几秒钟。
using (Process p = new Process())
{
ProcessStartInfo info = new ProcessStartInfo(wkhtmlPath, dimensions + EscapeArgument(location) + " -");
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
p.StartInfo = info;
p.Start();
byte[] buffer = new byte[32768];
int read = 0;
while ((read = p.StandardOutput.BaseStream.Read(buffer, 0, buffer.Length)) > 0)
{
//... write bytes to the an ouput buffer
}
}
它需要几分钟才能完成。当它没有指向使用同一会话的我的一个控制器时,这可以正常工作。当它使用相同的会话时,打印控制器等待来自 wkhtmltoimage 的响应,它正在等待打印控制器释放锁定以便它可以获取页面。一些超时必须打破这个僵局。我可以以某种方式安全地释放会话锁吗?