teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

検証内容の追記

2018/04/02 08:14

投稿

ot2os
ot2os

スコア23

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
+ ```