Повреждение памяти в wkHTMLtoPDF и исключение AccessViolationException - PullRequest
3 голосов
/ 29 февраля 2012

Я использую оболочку wkHTMLtoXSharp для вызова библиотеки wkHTMLtoPDF в Windows 2008 R2.Все отлично работает за одним исключением.Я вызываю оболочку из службы Windows C #.При первом запуске конвертация работает без нареканий.При последующих запусках я получаю повреждение памяти или AccessViolationException.Единственный способ исправить это - убить процесс, в котором работает DLL. Кажется, это сбрасывает основную проблему.Любая подсказка, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 10 мая 2012

У меня были такие же проблемы.Я получил решение, похожее на rggazarian, используя пакет wkhtmltopdf из здесь А затем этот код

 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();
    }
0 голосов
/ 18 апреля 2012

Конечно Зубровка. Я испробовал каждый трюк, с которым я знаком, чтобы преодолеть повреждение памяти без особой удачи.

Учитывая, что первый запуск работал безупречно, я решил обернуть вызов PDF в исполняемый файл и назвал исполняемый файл CommandLine через ProcessStartInfo. Это работает очень хорошо для меня. Я предпочел не вызывать столько переключений контекста, однако это меньшее из обоих зол.

...