Сценарий: WinForms настольных приложений, .Net 2.0Foxit PDF SDK - AccessViolationException в PrintWithDialog
У нас проблемы с 0,01% наших пользователей, которые не могут печатать документы, которые мы представляем через Foxit PDF SDK ActiveX v5.0.1
Когда пользователь нажимает кнопку «Печать», мы вызываем метод PrintWithDialog() в экземпляре управления зрителем. На данный момент выбрано исключение нарушения доступа, а затем приложение зависает. Диалоговое окно печати не отображается. Никакой дальнейший ввод пользователем (мышь, клавиатура) не оживляет его, и процесс должен быть убит с помощью диспетчера задач.
стека исключений трассировки:
AccessViolationException - Attempted to read or write protected memory. This is
often an indication that other memory is corrupt.
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
at FoxitPDFSDKStdLib._DFoxitPDFSDK.PrintWithDialog()
at AxFoxitPDFSDKStdLib.AxFoxitPDFSDK.PrintWithDialog()
at MyCode.PDFToolBarButtonClick(Object sender, EventArgs e)
Мы не можем воспроизвести проблему, и FoxIt, кажется, не быть в состоянии сделать что-нибудь, чтобы помочь нам, потому что мы не можем дать им проект, который воспроизводит проблема.
Мои подозрения направлены на управление настройками печати в Windows 7 и групповой политике. У нас был некоторый успех, прося пострадавших пользователей удалить и переустановить принтер по умолчанию, но затем проблема возникает после дня или двух. На одном сайте установлены параметры политики, которые могут печатать в цвете, и устанавливать принтер (одно и то же физическое устройство) по-разному.
У кого-нибудь есть опыт работы с Windows 7 или настройками групповой политики, влияющими на печать?
EDIT: Это затронуло только FoxIt. Все остальное - Acrobat, Word, Notepad и т. Д. Печатает без проблем.
Вы испробовали исправление здесь? «При запуске приложения на основе .NET Framework 2.0 возникает исключение System.AccessViolationException ...» http://support.microsoft.com/kb/975954 –
@Paul Zahra. Благодарю. Мы отбросим его. –
Если вы берете аварийный дамп, вы можете получить дополнительную информацию, но если проблема в DLL FoxIt, им будет нужно прочитать дамп и исправить его. Тем не менее, если вы заметили что-то странное о драйвере или что-то в этом роде, вы сможете отслеживать его до определенной DLL. http://blogs.msdn.com/b/tess/archive/2008/02/04/net-debugging-demos-lab-1-hang.aspx – JMarsch