質問編集履歴
1
検証内容の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -113,4 +113,54 @@
|
|
113
113
|
開発、テスト環境:
|
114
114
|
Win10x64 1709
|
115
115
|
Internet Explorer 11
|
116
|
-
Visual Studio Community 2015
|
116
|
+
Visual Studio Community 2015
|
117
|
+
|
118
|
+
---
|
119
|
+
補足です。
|
120
|
+
|
121
|
+
今回、エラーコードを基に調べてみたところ「原因はわからないけどこうすれば直った」と言う旨の話が何件かあり、それを基に**「●試したこと:」**を実施していますが、解決していません。
|
122
|
+
|
123
|
+
|
124
|
+
前述の通り、エラー発生時にエラーを`catch`してから再度同じ処理を実施すれば今度はエラーが出ずに継続できますが、何回かに一回、全く同じ場所で同じエラーが出続けて無限ループすることがあることがわかりました。
|
125
|
+
|
126
|
+
Form側のコードを下記のようにし、メインの処理をスレッドに分けて、一定期間処理が終わらなければ無理やりスレッドごと処理を中断し、その後再開すると言う方法を試してみました。しかし、この方法で処理を再実行しても全く同じ場所で同じエラーが出て進めません。
|
127
|
+
|
128
|
+
試しに[ielowutil]プロセスも終了するようにしてみましたが、同様でした。
|
129
|
+
|
130
|
+
しかし、手動で[デバッグの停止]を実施して、再度プログラムを開始して同じURLを処理すると正常に機能します。
|
131
|
+
|
132
|
+
```lang-vb.net
|
133
|
+
Option Explicit On
|
134
|
+
|
135
|
+
Public Class Form1
|
136
|
+
|
137
|
+
Private t As New System.Threading.Thread(
|
138
|
+
New System.Threading.ParameterizedThreadStart(AddressOf Main))
|
139
|
+
|
140
|
+
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
141
|
+
|
142
|
+
LastAct = Now
|
143
|
+
Me.Timer1.Enabled = True
|
144
|
+
t.Start(Me.TextBox1.Text) '入力されたURL内のリンクを調べる
|
145
|
+
|
146
|
+
End Sub
|
147
|
+
|
148
|
+
'一定期間応答がなければ強制的にスレッドを立ち上げなおす
|
149
|
+
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
|
150
|
+
'10分以上応答なければ強制再実行
|
151
|
+
If DateDiff("n", LastAct, Now) > 10 Then
|
152
|
+
Me.Timer1.Enabled = False
|
153
|
+
Debug.Print("10分応答なし")
|
154
|
+
t.Abort()
|
155
|
+
t.Join()
|
156
|
+
KillProcess("iexplore") 'iexploreのプロセスを強制終了するコマンド
|
157
|
+
LastAct = Now
|
158
|
+
t = Nothing
|
159
|
+
t = New System.Threading.Thread(
|
160
|
+
New System.Threading.ParameterizedThreadStart(AddressOf Main))
|
161
|
+
t.Start(Me.TextBox1.Text)
|
162
|
+
Me.Timer1.Enabled = True
|
163
|
+
End If
|
164
|
+
End Sub
|
165
|
+
End Class
|
166
|
+
```
|