我正在使用wkHTMLtoXSharp包装器来调用Windows 2008 R2上的wkHTMLtoPDF库。除了一个例外,它一切都很好用。我正在调用C#windows服务的包装器。在第一次运行时,转换完美无缺。在后续运行中,我得到内存损坏或AccessViolationException。修复它的唯一方法是终止运行DLL的进程。这似乎重置了潜在的问题。有任何线索如何解决这个问题?
答案 0 :(得分:1)
我遇到了同样的问题。我最终得到了一个与rggazarian类似的解决方案 来自here的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();
}
答案 1 :(得分:0)
当然Zubrowka。我尝试了每一个我熟悉的技巧来克服内存损坏而没有太多运气。
鉴于第一次运行完美无缺,我决定将PDF调用包装在可执行文件中,并通过ProcessStartInfo调用CommandLine可执行文件。这对我来说很好。我倾向于不引起同样多的上下文切换,但是,这两种弊端都是较少的。