我想使用wkhtmltoimage栅格化地图。我正在启动一个新进程,并向其传递必要的命令行参数以获取我想要的映像。控制器中的MVC3死锁
当前进程启动时,我目前正处于非常长时间的停顿状态。我已经启用显示窗口来查看是否有任何需要用户输入但没有任何对话相关的活动。该进程在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的响应,该响应正在等待打印控制器释放锁,以便它可以获取页面。一些超时必须打破这种僵局。我可以安全地释放会话锁吗?
为什么你不使用TPL解决这个问题? 我想你重新考虑你的应用逻辑。 – IamStalker 2012-08-07 07:45:10