我想使用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