COM的问题
有这样一个应用, 主应用程序会用到MS的xml 控件, 所以需要调用Coinitialize()初始化COM控件的运行环境,但是有一线程会用到其他的COM组件,所以线程初始化的时候,也要调用Coinitialize()函数, 程序提供终止线程的操作, 若线程被终止会调用::CoUninitialize();清除掉线程的运行环境; 但问题来了,多运行、终止几次线程, 做如下操作会有问题: 某些情况下要释放掉m_pXMLDomDoc指针(因需要加载另一个xml文件),此时再用函数:
HRESULT hr = CoCreateInstance( __uuidof(DOMDocument40),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(MSXML2::IXMLDOMDocument),
(void**)&m_pXMLDomDoc);
创建m_pXMLDomDoc对象的时候, 会出现问题, 返回的错误码hr为:0x800401f0, 这样看帮助文档应该是CO_E_NOTINITIALIZED的意思;但是我的主应用程序是没有调用函数::CoUninitialize();的, 线程的函数调用Coinitialize()和CoUninitialize()是匹配的, 为什么会出现这种情况????