質問編集履歴

1

検証内容の追記

2018/04/02 08:14

投稿

ot2os
ot2os

スコア23

test CHANGED
File without changes
test CHANGED
@@ -229,3 +229,103 @@
229
229
  Internet Explorer 11
230
230
 
231
231
  Visual Studio Community 2015
232
+
233
+
234
+
235
+ ---
236
+
237
+ 補足です。
238
+
239
+
240
+
241
+ 今回、エラーコードを基に調べてみたところ「原因はわからないけどこうすれば直った」と言う旨の話が何件かあり、それを基に**「●試したこと:」**を実施していますが、解決していません。
242
+
243
+
244
+
245
+
246
+
247
+ 前述の通り、エラー発生時にエラーを`catch`してから再度同じ処理を実施すれば今度はエラーが出ずに継続できますが、何回かに一回、全く同じ場所で同じエラーが出続けて無限ループすることがあることがわかりました。
248
+
249
+
250
+
251
+ Form側のコードを下記のようにし、メインの処理をスレッドに分けて、一定期間処理が終わらなければ無理やりスレッドごと処理を中断し、その後再開すると言う方法を試してみました。しかし、この方法で処理を再実行しても全く同じ場所で同じエラーが出て進めません。
252
+
253
+
254
+
255
+ 試しに[ielowutil]プロセスも終了するようにしてみましたが、同様でした。
256
+
257
+
258
+
259
+ しかし、手動で[デバッグの停止]を実施して、再度プログラムを開始して同じURLを処理すると正常に機能します。
260
+
261
+
262
+
263
+ ```lang-vb.net
264
+
265
+ Option Explicit On
266
+
267
+
268
+
269
+ Public Class Form1
270
+
271
+
272
+
273
+ Private t As New System.Threading.Thread(
274
+
275
+ New System.Threading.ParameterizedThreadStart(AddressOf Main))
276
+
277
+
278
+
279
+ Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
280
+
281
+
282
+
283
+ LastAct = Now
284
+
285
+ Me.Timer1.Enabled = True
286
+
287
+ t.Start(Me.TextBox1.Text) '入力されたURL内のリンクを調べる
288
+
289
+
290
+
291
+ End Sub
292
+
293
+
294
+
295
+ '一定期間応答がなければ強制的にスレッドを立ち上げなおす
296
+
297
+ Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
298
+
299
+ '10分以上応答なければ強制再実行
300
+
301
+ If DateDiff("n", LastAct, Now) > 10 Then
302
+
303
+ Me.Timer1.Enabled = False
304
+
305
+ Debug.Print("10分応答なし")
306
+
307
+ t.Abort()
308
+
309
+ t.Join()
310
+
311
+ KillProcess("iexplore") 'iexploreのプロセスを強制終了するコマンド
312
+
313
+ LastAct = Now
314
+
315
+ t = Nothing
316
+
317
+ t = New System.Threading.Thread(
318
+
319
+ New System.Threading.ParameterizedThreadStart(AddressOf Main))
320
+
321
+ t.Start(Me.TextBox1.Text)
322
+
323
+ Me.Timer1.Enabled = True
324
+
325
+ End If
326
+
327
+ End Sub
328
+
329
+ End Class
330
+
331
+ ```