|
分類:[VB.NET/VB2005 以降]
使用ソフト
Microsoft Visual Studio 2010
.net framework 4
定期的にブラウザからURLを取得するモジュールを作成したのですが、
デバッグモードで起動してフォーム画面にてクリックボタンを何度か押していると
以下のメッセージが表示されてしまいます。
「Reentrancyが検出されました。
最初に移行しないでマネージ コードを呼び出そうとしています。ベクトル化例外ハンドラーのような、下層レベルのネイティブ機能拡張ポイント内でマネージ コードを実行しないでください。
この動作により、破損およびデータの損失を発生させる可能性があります。」
メッセージの表示後はエラーで落ちることもなく、コンパイルをしてもエラーで落ちることはありません。
どなたか解決策を教えていただけないでしょうか。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim urlA As String = ""
Dim ie As Object = Nothing
Dim sh As Object = Nothing
Dim shw As Object = Nothing
Try
sh = CreateObject("Shell.Application")
Try
shw = sh.windows()
Try
ie = CreateObject("InternetExplorer.Application")
For Each ie In shw
urlA = ie.LocationURL
Me.TextBox1.Text = urlA
ie.Quit()
Next ie
Finally
If Not ie Is Nothing Then
If System.Runtime.InteropServices.Marshal.IsComObject(ie) Then
'COMオブジェクトの参照カウントをデクリメント
System.Runtime.InteropServices.Marshal.ReleaseComObject(ie)
End If
ie = Nothing
End If
End Try
Finally
If Not shw Is Nothing Then
If System.Runtime.InteropServices.Marshal.IsComObject(shw) Then
'COMオブジェクトの参照カウントをデクリメント
System.Runtime.InteropServices.Marshal.ReleaseComObject(shw)
End If
shw = Nothing
End If
End Try
Finally
If Not sh Is Nothing Then
If System.Runtime.InteropServices.Marshal.IsComObject(sh) Then
'COMオブジェクトの参照カウントをデクリメント
System.Runtime.InteropServices.Marshal.ReleaseComObject(sh)
End If
sh = Nothing
End If
End Try
End Sub
|