2017-01-17 2 views
1

У нас есть приложение Winforms, которое использует PDFViewer и AxAcroPDFlib. Раньше у нас была проблема, когда форма зависала при закрытии, потому что проблема с закрытием PDF-файла была затруднена. Решение, найденное here, предназначалось для назначения фокуса другому элементу управления во время события закрытия форм. С момента внедрения это не сработало.Закрытие формы медленное из-за просмотра PDF

На прошлой неделе появилось обновление для Adobe Reader DC, и проблема, похоже, вернулась. Задержка с закрытием формы снова задерживается. При закрытии формы на панели задач появляется значок Adobe Acrobat в течение примерно 10 секунд, затем исчезает и форма закрывается. Это то, что было раньше.

Есть ли у кого-нибудь идеи, как исправить эту проблему сейчас?

Я бы хотел заменить этот элемент управления другим, который не полагается на пользователя, у которого установлен Acrobat, но пока у меня не будет времени на это, мне понадобится исправление/обходное решение.

+0

Если вы решите отойти от AcroPDFLib, библиотека ImageMagick является бесплатной опцией, которая использует механизм Ghostscript для работы с PDF. Для ImageMagick используется .NET-обертка для использования с C#. Другим вариантом является [профессиональная библиотека PDF LEADTOOLS] (https://www.leadtools.com/sdk/pdf), которая имеет бесплатное ознакомительное издание. Примечание. Я сотрудник поставщика LEADTOOLS. –

ответ

0

Сегодня утром моей заявки не было. Я проверил программы и функции и обнаружил, что Acrobat Reader обновлен до версии 15.023.20070. Похоже, Adobe исправила ошибку. Я больше не вижу задержки.

Если у вас возникла эта проблема, проверьте, исправлено ли обновление для вас. За последние пару недель я увидел несколько обходных решений, которые, по словам других, работали для них, которые не работали для меня, поэтому возможно, что моя проблема была не такой, как другие, поэтому это обновление не может решить проблему каждого. Похоже, что она была неподвижной.

0

У меня такая же проблема.

Снятие управления AxAcroPDF из коллекции управления формой при закрытии работ для меня.

+0

Не забудьте установить этот элемент управления в значение «null» или вы можете получить утечку памяти. – ArtK

+0

Согласен. Спасибо, что указал. –

1

Перепробовав многие из решений, которые я нашел в течение последних 8 часов, пытаясь решить эту проблему, я наконец-то нашел это в качестве решения.

В случае FormClosing добавить следующее

  • Используйте рутина LoadFile, чтобы загрузить PDF, который не существует
  • Измените фокус на другой объект
  • Пусть другие события огонь
  • Сон за 50

См. Мой код на C# ниже. Если я удалю любую из этих строк, появится зависание в форме close.

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

Это не работает для меня в VB.NET. Если я пройду через код, на Dispose будет отложено около 10 секунд. –

Смежные вопросы