- ベストアンサー
Webアクセス時のタイムアウト処理について
- VB2008でWebにアクセスする際、タイムアウト処理を実装したいと考えています。
- Webブラウザの応答がない場合に、処理を中断させるためには、タイムスタンプを使用してスタート時間と比較する方法が考えられます。
- しかし、VB2008で同様の関数を見つけることができず、他の適切な関数や方法を探しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
タイマーコントロールを使ってはいかがですか? タイムアウト用のフラグ変数を用意 dim m_bTimeOut as boolean Private Function WebWait(ByVal time As Integer) ' タイマーの初期化 Timer1.Enabled = false ' ms単位なので 10*1000 を代入 Timer1.Interval = 10 * 1000 ' フラグを初期化 m_bTimeOut = false Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() if m_bTimeOut = true then Timer1.Enabled = false MsgBox "タイムアウトしました" end if Loop Timer1.Enabled = false End Function ' タイマーイベント Private Sub Timer1_Tick(引数省略) m_bTimeOut = true Timer1.Enabled = false End Sub といった具合で ・・・
その他の回答 (2)
- yyr446
- ベストアンサー率65% (870/1330)
No1.訂正 Sub sec_wait(Byref x ) Dim xsec As Variant xsec = Second(Time) If xsec = 59 Then xsec = 1 Else xsec = xsec End If Do While Second(Time) <= xsec + x DoEvents Loop End Sub 10秒待つ時は、sec_wait(10)とする。
お礼
回答ありがとうございます。 この方法も試してみたいと思います。
- yyr446
- ベストアンサー率65% (870/1330)
Sub sec_wait() Dim xsec As Variant xsec = Second(Time) If xsec = 59 Then xsec = 1 Else xsec = xsec End If Do While Second(Time) <= xsec + 0.5 DoEvents Loop End Sub これを使って10秒待つ時は、sec_wait(10)とする。
お礼
最終的にこのような形で無事に実現できました。 まずTimer1をフォーム上に設置してから、コードを次のようにしました。 目的どおりに動作しました。 ありがとうございます。 ※スペースは全角です。 Dim WebWaitTimeOut As Boolean = False Private Function WebWait(ByVal time As Integer) Timer1.Enabled = True ' タイマーの初期化 Timer1.Interval = 10 * 1000 ' ms単位なので 10*1000 を代入 WebWaitTimeOut = False ' フラグを初期化 While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete If action_loop = False Then Return True Application.DoEvents() If WebWaitTimeOut = True Then Timer1.Enabled = False Exit While End If End While Timer1.Enabled = False Return WebWaitTimeOut End Function Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick WebWaitTimeOut = True Timer1.Enabled = False End Sub
補足
回答ありがとうございます。 タイマーコントロールは勉強不足でした。 名前は知っていたのですが、何だか難しそうで敬遠していました。 これを機会にチャレンジしてみます。