2016-07-01 6 views
0

У меня есть вопрос, связанный с окнами, встроенным браузером и COM. То, что я пытаюсь сделать, - отобразить некоторые данные пользователю в форме HTML, поэтому я использую элемент управления iwebbrowser2 для достижения этого.iWebBrowser :: Навигация по тупику после исключения ole32.dll

У меня этот странный тупик или зависание в моей заявке после звонка на iwebbrowser2 Navigate после аварии ole32.dll. Этот случай ole32 случайным образом случается в моем приложении. Не существует обычного места или времени, в котором происходит исключение. Это может произойти в самом начале при выполнении приложения или позже при использовании приложения. В приложении, на котором работает o, есть несколько потоков, и поток рабочих окон Windows, который появляется только из ниоткуда. Существует определенный поток, называемый WrapperThreadProc, что я не уверен, что делает, но он вызывает вызов CoUninitialize на COM-объекте, который может не существовать больше, возможно, вызывая исключение на ole32.dll (не уверен, что это действительно происходит).

вот фото из стека вызовов, когда исключение происходит here are the pics of the call stack when the exception happens

и вот рис стека вызовов, когда тупиковая происходит после того, как navigate() and here is a pic of the call stack when the deadlock happens after navigate()

Кто-нибудь есть подсказка о том, что происходит с этой проводной проблемой? Я очень ценю любую небольшую помощь.

Thanks

+0

Скриншоты не читаются и бесполезны. Всегда отправляйте столбец в виде текста и предоставляйте [mcve]. С предоставленной вами информацией мы можем только предложить исправить ошибки. – IInspectable

+0

Спасибо за комментарии. Я буду иметь в виду все предложения в следующий раз, когда я задаю вопрос. С учетом сказанного я нашел решение проблемы. Оказывается, в файле networkitemfactory.dll происходит состояние гонки, и Microsoft выпустила исправление для него. Вот статья https://support.microsoft.com/en-us/kb/2494427. –

ответ

2

Я нашел решение проблемы. Оказывается, в файле networkitemfactory.dll есть условие гонки, которое может привести к сбою и выгрузке ole32.dll. Если какой-либо COM-вызов выполняется после исключения, такого как «iwebbrowser2 :: navigate», приложение будет висеть в тупике. Корпорация Майкрософт выпустила исправление для нее. Вот статья support.microsoft.com/ru-ru/kb/2494427

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

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