MSHTML程序集的诡异问题

weixin_38061331 2017-10-17 12:23:36
Dim u As UInteger = 0
Try
Do
u += 1
j = DirectCast(o.item(d), HTMLTableRow).cells
Loop
Catch ex As Exception
MsgBox("第" & u & "次访问出错:" & ex.GetType.ToString & ":" & ex.Message)
End Try

这是我用来测试的一段代码,是一个死循环,无限次访问变量o(在之前的代码中赋值)然后复制给变量j(o和j都是MSHTML.IHTMLElementCollection类型)。在Debug模式下可以一直正常运行,直到计数器u达到上限。但是在Release模式下,循环5000~6000次(每次运行数目都不同)就会报错"NullReferenceException"。注意我一直都是在访问o,没有对o进行任何修改,为什么会出错呢?这是MSHTML这个程序集的bug吗?另外,如果进行一个小改动:
Dim u As UInteger = 0, v As Object
Try
Do
u += 1
v = DirectCast(o.item(d), HTMLTableRow)
Loop
Catch ex As Exception
MsgBox("第" & u & "次访问出错:" & ex.GetType.ToString & ":" & ex.Message)
End Try


也就是把.cells去掉,就不会出错了。这又是怎么回事?(这个方法并不能用来workaround,因为我的程序必须要访问.cells)
...全文
14 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧