2012-02-29 17 views
3

Windows 2008 R2でwkHTMLtoXSharpラッパーを使用してwkHTMLtoPDFライブラリを呼び出しています。 1つの例外を除いてすべてがうまくいっています。私はC#のWindowsサービスからラッパーを呼び出しています。最初の実行では、変換は完璧に動作します。その後の実行では、メモリ破損またはAccessViolationExceptionが発生します。これを修正する唯一の方法は、DLLが実行されているプロセスを強制終了することです。これは根本的な問題をリセットするようです。任意の手掛かりをどのようにこれをトラブルシューティングするには?wkHTMLtoPDFメモリ破損とAccessViolationException

+0

は、非常にunjoyfulです。特にコードベースのサイズが指定されています。あなたが図書館の著者の助けを得ることができない場合は、それを捨てて、他のものを試してください。 –

+0

あなたの助けに感謝します。私は図書館の著者の助けを得ています。 – rghazarian

+0

私は同じ問題を抱えています。手伝ってくれますか? –

答えて

0

確かにズブロカ。私は多くの運がなければメモリ破損を克服するために私がよく知っているすべてのトリックを試しました。

最初の実行が完璧に機能していたことを考えると、PDFコールを実行可能ファイルにラップすることにし、ProcessStartInfo経由でCommandLine実行可能ファイルを呼び出しました。これは私のためにうまくいきます。私はコンテクストの切り替えを起こさないようにしたいと思っていましたが、それはどちらの悪いことでもありません。

1

私は同じ問題がありました。私はhere から wkhtmltopdfパッケージを使用してrggazarianと同様のソリューションになってしまった。そして、あなたがに慣れていない言語で書かれたあなたが書いていないコードでヒープ破損のデバッグこのコード

public static void GenerateNewStylePDF(string domain, string url, string applicationPath) 
    { 
     var p = new Process(); 
     var startInfo = new ProcessStartInfo 
          { 
           FileName = applicationPath + "\\bin\\wkhtmltopdf\\wkhtmltopdf.exe", 
           Arguments = domain + url + " \"" + applicationPath + "export.pdf\"", 
           UseShellExecute = false, 
           RedirectStandardOutput = true, 
           RedirectStandardError = true 
          }; 
     p.StartInfo = startInfo; 
     p.Start(); 
     var s = p.StandardOutput.ReadToEnd(); 
     var e = p.StandardError.ReadToEnd(); 
     p.WaitForExit(); 
    }