2015-02-23 7 views
1

Сценарий: 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 и т. Д. Печатает без проблем.

+0

Вы испробовали исправление здесь? «При запуске приложения на основе .NET Framework 2.0 возникает исключение System.AccessViolationException ...» http://support.microsoft.com/kb/975954 –

+0

@Paul Zahra. Благодарю. Мы отбросим его. –

+0

Если вы берете аварийный дамп, вы можете получить дополнительную информацию, но если проблема в DLL FoxIt, им будет нужно прочитать дамп и исправить его. Тем не менее, если вы заметили что-то странное о драйвере или что-то в этом роде, вы сможете отслеживать его до определенной DLL. http://blogs.msdn.com/b/tess/archive/2008/02/04/net-debugging-demos-lab-1-hang.aspx – JMarsch

ответ

3

я могу смоделировать эту ситуацию, если удалить настройки принтера по умолчанию (то есть не принтер установлен по умолчанию), поэтому временное переименование следующего окна реестра от «Device» в «OldDevice»

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device 

Моих простой форма:

public Form1() 
{ 
    InitializeComponent(); 
    try 
    { 
     this.axFoxitPDFSDK1.OpenFile(@"C:\foxit\FoxitPDFActiveX51_Manual.pdf", ""); 

     this.axFoxitPDFSDK1.PrintWithDialog(); 
    } 
    catch (System.Exception exc) 
    { 
     Debug.WriteLine(exc.StackTrace); 
     Debug.WriteLine(exc.Message); 
     if (exc.InnerException != null) 
     { 
      Debug.WriteLine(exc.InnerException.Message); 
     } 

    } 
} 

и соответствующий выход из отладки:

Eccezione first-chance di tipo 'System.AccessViolationException' in mscorlib.dll 
'MySOfoxit.vshost.exe' (Gestito (v2.0.50727)): 'C:\Windows\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll' caricato, caricamento simboli ignorato. Il modulo è ottimizzato e l'opzione 'Just My Code' del debugger è abilitata. 
    in System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) 
    in FoxitPDFSDKStdLib._DFoxitPDFSDK.PrintWithDialog() 
    in AxFoxitPDFSDKStdLib.AxFoxitPDFSDK.PrintWithDialog() 
    in MySOfoxit.Form1..ctor() in c:\foxit\MySOfoxit\Form1.cs:riga 23 
Tentativo di lettura o scrittura della memoria protetta. Spesso questa condizione indica che altre parti della memoria sono danneggiate. 

I ча n упоминайте это link как (возможно) одну из возможных причин запускающего события. Другие приложения (WinWord, Adobe Reader) работают должным образом (требуется только ручной выбор принтера)

+0

Это выглядит _extremely_ перспективным. Я сделаю все, что в моих силах, чтобы проверить это до истечения срока действия. Благодарю. –

+0

Теперь я могу воспроизвести проблему, как вы описали. Я сразу же отправлюсь на наших клиентов. –

+0

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

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

  • Нет связанных вопросов^_^