我有一个与Windows嵌入式浏览器和COM相关的问题。我想要做的是以HTML格式向用户显示一些数据,因此我使用iwebbrowser2
控件来实现此目的。
在iwebbrowser2 Navigate
崩溃后调用ole32.dll
后,我有这种奇怪的死锁或挂在我的应用程序中。这个ole32崩溃随机发生在我的应用程序中。没有通常的地方或时间发生异常。它可能在应用程序执行开始时或稍后在使用应用程序时发生。工作的应用程序有几个运行的线程和一些无处不在的Windows工作线程。有一个名为WrapperThreadProc
的特定线程,我不确定它在做什么但它在COM对象上调用CoUninitialize
可能不再存在,可能导致{{1}上的异常(不确定这是否真的发生)。
这是异常发生时调用堆栈的图片
,这是ole32.dll
之后发生死锁时调用堆栈的图片
有没有人知道这个有线问题是怎么回事?我非常感谢你的帮助。
由于
答案 0 :(得分:2)
我找到了问题的解决方案。事实证明,networkitemfactory.dll中存在一种竞争条件,会导致ole32.dll崩溃和卸载。如果在异常之后进行任何COM调用,例如" iwebbrowser2 :: navigate"然后应用程序将陷入僵局。微软发布了一个修补程序。这是文章support.microsoft.com/en-us/kb/2494427