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 をコンパイルして実行すると、2 つのエラーのいずれかが表示されます。最初に、上記を11回呼び出した後、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されました。これは繰り返し可能で、常に 11 回の反復後に発生します。
上記の前に Threading.Thread.Sleep(1000) を追加して再コンパイルすると、特定の回数の繰り返しの後、「アクセスが拒否されました」というエラーが再び発生します。