+ -
当前位置:首页 → 问答吧 → MSXML在多线程成使用中发生错误

MSXML在多线程成使用中发生错误

时间:2011-12-20

来源:互联网

一个压力测试工具,线程数可控,每个线程中都会对同一个IXMLDOMDocument进行操作,当线程少的时候,比如100个,很少会出现问题,但是当线程数超过200,每次运行很快就会出现异常:
PowerTest_D.exe 中的 0x5880e921 处未处理的异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲突
产生异常的代码每次都是对某个IXMLDOMNode的调用,比如selectSingleNode或者selectNodes,此时该IXMLDOMNode对象不为空,我认为是MSXML内部出现了问题,请问如何解决这个问题?

我的IXMLDOMDocument初始化代码:

C/C++ code

MSXML2::IXMLDOMDocumentPtr m_pXmlDoc;
HRESULT hr = CoCreateInstance(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument2, (void**)&m_pXmlDoc);



不用CLSID_DOMDocument60改用CLSID_DOMDocument40或CLSID_DOMDocument都是一样的现象。

作者: solomonlxd   发布时间: 2011-12-20

如果它自身有这个bug,那么你就要来规避了,比如不开这么多线程
可以尝试给微软提交bug

作者: oyljerry   发布时间: 2011-12-20

如果不是必须,可否考虑Cmarkup对XML文件进行操作

作者: cityboyloving   发布时间: 2011-12-20