在同一线程上调用 HtmlHelp 函数后,CoInitializeEx 函数失败

本文讨论在同一线程上调用HtmlHelp函数后 CoInitializeEx 函数失败的问题。

适用于: 所有支持的操作系统

症状

如果应用程序使用指定的值调用之前调用 HtmlHelpCoInitializeExCoInitializeEx则可以返回 RPC_E_CHANGED_MODE (0x80010106)COINIT_MULTITHREADED 因此,应用程序可能会崩溃、挂起或显示意外行为。

原因

如果调用 HtmlHelp 的线程尚未使用 CoInitializeCoInitializeEx进行初始化, HtmlHelp 则使用 COINIT_APARTMENTTHREADED将线程初始化为单元线程。

解决方法

若要解决此问题并避免单个线程上的 COM 初始化冲突,请创建一个新线程并在该线程上调用 HtmlHelp