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
}
}
完了するまでに数分かかります。これは、同じセッションを使用しているコントローラーの1つを指していない場合に正常に機能します。同じセッションを使用する場合、プリントコントローラはwkhtmltoimageからの応答を待機します。この応答は、プリントコントローラがページを取得できるようにロックを解除するのを待機しています。何らかのタイムアウトがこのデッドロックを打破しているに違いありません。どういうわけかセッションロックを安全に解除できますか?