MSXML在多线程成使用中发生错误
时间:2011-12-20
来源:互联网
一个压力测试工具,线程数可控,每个线程中都会对同一个IXMLDOMDocument进行操作,当线程少的时候,比如100个,很少会出现问题,但是当线程数超过200,每次运行很快就会出现异常:
PowerTest_D.exe 中的 0x5880e921 处未处理的异常: 0xC0000005: 读取位置 0x00000008 时发生访问冲突
产生异常的代码每次都是对某个IXMLDOMNode的调用,比如selectSingleNode或者selectNodes,此时该IXMLDOMNode对象不为空,我认为是MSXML内部出现了问题,请问如何解决这个问题?
我的IXMLDOMDocument初始化代码:
C/C++ code
不用CLSID_DOMDocument60改用CLSID_DOMDocument40或CLSID_DOMDocument都是一样的现象。
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
可以尝试给微软提交bug
作者: oyljerry 发布时间: 2011-12-20
每个线程里的IXMLDOMDocument都是新的对象吗?线程里有没有做COM的初始化?
作者: dream238 发布时间: 2011-12-20
引用 2 楼 dream238 的回复:
每个线程里的IXMLDOMDocument都是新的对象吗?线程里有没有做COM的初始化?
每个线程里的IXMLDOMDocument都是新的对象吗?线程里有没有做COM的初始化?
IXMLDOMDocument对象只有一个,每个线程一开始就调用了CoInitialize(NULL)进行COM初始化
作者: solomonlxd 发布时间: 2011-12-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28