|
2010/06/12(Sat) 22:29:02 編集(投稿者) 2010/06/12(Sat) 22:27:08 編集(投稿者)
> WebBrowserをRefreshした後、すでにReadyStateがCompleteになっていることはないのでしょうか? > (その場合、無限ループになってしまうのではないかと思いますが...) > よろしくお願いします。
試した結果,表示が完了している状態でF5を押した場合,
MyBase.Refresh()
の直後はReadyStateが必ずWebBrowserReadyState.Completeであることがわかっていたので,
While Me.ReadyState = WebBrowserReadyState.Complete Application.DoEvents() End While
と書いたのですが,その後,Application.DoEvents()が1つあればReadyStateは変化することがわかりましたので,
MyBase.Refresh() Application.DoEvents() While Me.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While
とすれば十分です。
「WebBrowserをRefreshした後、すでにReadyStateがCompleteになっていること」は実験の結果では何度繰り返しても なかったので,最初のコードでも動作するはずです。Refreshの直後は必ずCompleteで,DoEvents()でLodingに変わります。ただ,あくまでも「DocumentComplete」の状態でリロードしたときの場合です。その他の場合は調査していません。 何にせよポーリングする場合はタイムアウトの処理が必要だと思います。
|