VB.NET mshtml库导致“错误”;“访问被拒绝”;(0x80070005)或;未设置对象引用…“;错误

VB.NET mshtml库导致“错误”;“访问被拒绝”;(0x80070005)或;未设置对象引用…“;错误,vb.net,mshtml,Vb.net,Mshtml,我正在VB.NET控制台应用程序中使用mshtml库从http请求中提取一些数据 代码如下: Dim htmlDocument As IHTMLDocument2 For i As Integer = 0 To 10 searchHtml = getHtml(url) htmlDocument = New HTMLDocumentClass() htmlDocument.write(searchHtml) htmlDocument.close() Dim

我正在VB.NET控制台应用程序中使用mshtml库从http请求中提取一些数据

代码如下:

Dim htmlDocument As IHTMLDocument2
For i As Integer = 0 To 10
    searchHtml = getHtml(url)
    htmlDocument = New HTMLDocumentClass()
    htmlDocument.write(searchHtml)
    htmlDocument.close()
    Dim results As IHTMLElement = htmlDocument.body.all.item("ires")
    For Each li As IHTMLElement In results.all.tags("li")
        Dim element As IHTMLElement = li.all.tags("cite")(0)
        If element.innerText.ToLower().Contains(text) Then
            ' Do Something here
            Exit For
        End If
    Next
Next
上面的代码是从另一个方法递归调用的

我可以在调试中运行我的代码,它可以一次又一次地工作,没有任何问题

如果我编译exe并运行它,那么我会收到两个错误中的一个。最初,我在11次调用上述函数后得到了一个“对象引用未设置为对象实例”。这是可重复的,并且总是在11次迭代之后发生


如果我在上面的代码之前添加一个Threading.Thread.Sleep(1000)并重新编译,我会在经过一定次数的迭代后再次出现“访问被拒绝”错误。

使用HTML Agility Pack。哪一行引发异常?相当不可诊断的行为。首先将[StatThread]放在主方法上。考虑偶尔调用GC.CopeCube(),这是非常不可诊断的行为…真的很烦人!在垃圾收集器上说得不错,但我想我要先看看HTML敏捷包。听起来它比mshtml库好得多。HTML敏捷包非常好;使用起来容易多了(喜欢XPath支持),而且我不再犯错误了。谢谢你的迎头大餐。如果你这样回答,我会记下来的。