【问题标题】:Form closing slow because of PDF viewer由于 PDF 查看器,表单关闭缓慢
【发布时间】:2017-02-23 23:10:39
【问题描述】:

我们有一个使用 PDFViewer 和 AxAcroPDFlib 的 Winforms 应用程序。我们之前遇到过一个问题,即关闭时表单会挂起,因为 pdf 控件无法关闭。找到here 的解决方案是在表单关闭事件期间将焦点分配给不同的控件。自实施以来,这一直没有问题。

过去一周,Adobe Reader DC 进行了更新,问题似乎又出现了。再次关闭表单有延迟。关闭表单时,任务栏上会出现一个 Adob​​e Acrobat 图标约 10 秒钟,然后消失并关闭表单。这是以前发生的事情。

现在有人知道如何解决这个问题吗?

我想用另一个不依赖于安装 Acrobat 的用户的控件替换此控件,但在我有时间这样做之前,我需要修复/解决方法。

【问题讨论】:

  • 如果您决定放弃 AcroPDFLib,ImageMagick 库是一个免费选项,它使用 Ghostscript 引擎来处理 PDF。 ImageMagick 有一个用于 C# 的 .NET 包装器。另一种选择是LEADTOOLS professional PDF library,它有一个免费的评估版。请注意,我是 LEADTOOLS 供应商的员工。

标签: winforms pdf-viewer axacropdf


【解决方案1】:

在尝试解决此问题的最后 8 小时中找到了许多解决方案后,我终于找到了解决方案。

在 FormClosing 事件期间添加以下内容

  • 使用 loadFile 例程加载不存在的 PDF
  • 将焦点更改为其他对象
  • 让其他事件触发
  • 睡 50 分钟

请参阅下面的 C# 代码。如果我删除这些行中的任何一行,表单关闭的挂起再次出现。

if (this.axPDF != null)
{
    axPDF.LoadFile("someFileThatDoesntExist.PDF");
    cmdNext.Focus();
    System.Windows.Forms.Application.DoEvents();
    System.Threading.Thread.Sleep(50);
    axPDF.Dispose();
}

【讨论】:

  • 它在 VB.NET 中对我不起作用。如果我单步执行代码,Dispose 会有大约 10 秒的延迟。
【解决方案2】:

我遇到了同样的问题。

关闭作品时从表单的控件集合中删除 AxAcroPDF 控件 对我来说。

一个

【讨论】:

  • 不要忘记将该控件设置为null,否则您可能会导致内存泄漏。
【解决方案3】:

今天早上我的申请没有延迟。我检查了程序和功能,发现 Acrobat Reader 已更新到版本 15.023.20070。看起来 Adob​​e 已经修复了这个错误。我没有再看到延迟了。

如果您遇到此问题,请检查更新是否为您解决了该问题。在过去的几周里,我看到了一些其他人说对他们有用但对我不起作用的解决方法,因此我的问题可能与其他人不同,因此此更新可能无法解决每个人的问题。不过它似乎已经修复了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 2011-01-28
    • 2012-06-29
    • 2011-07-08
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多