2012-02-29 137 views
3

我正在使用wkHTMLtoXSharp包裝來調用Windows 2008 R2上的wkHTMLtoPDF庫。除了一個例外,這一切都很好。我從C#窗口服務調用封裝器。在第一次運行時,轉換工作完美無瑕。在後續運行中,我得到內存損壞或AccessViolationException。解決這個問題的唯一方法是殺死DLL運行的進程。這似乎重置了潛在的問題。任何線索如何解決這個問題?wkHTMLtoPDF內存損壞和AccessViolationException

+0

在你沒有寫代碼調試堆損壞,寫在你不熟悉的語言是非常unjoyful 。特別是考慮到代碼庫的大小。如果你無法從圖書館作者那裏得到幫助,那就把它丟棄並嘗試其他的東西。 – 2012-02-29 12:29:49

+0

感謝您的建議。我得到了圖書館作者的幫助。 – rghazarian 2012-02-29 18:23:07

+0

我遇到了同樣的問題。你能幫我嗎? – 2012-04-13 15:33:42

回答

0

當然Zubrowka。我嘗試了所有我熟悉的技巧來克服內存損壞,但沒有多少運氣。

鑑於第一次運行完美無缺,我決定將PDF調用封裝在可執行文件中,並通過ProcessStartInfo調用CommandLine可執行文件。這對我來說工作得很好。我不希望引起儘可能多的上下文切換,但是,這是兩種惡習中較小的一種。

1

我有同樣的問題。我結束了一個類似的解決方案爲rggazarian使用 wkhtmltopdf包從here 然後將此代碼

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(); 
    }