webbrowserで連続的に表示するには?


あつ  2011-10-06 08:23:42  No: 147365

webbrowserで一定間隔で連続的にWEB表示したいのですが、最後のページしか表示されません。教えて下さい。

        Dim n As Integer
        For n = 1 To 5
            Application.DoEvents()
            WebBrowser1.Navigate("http://ameblo.jp/takahashiai-            blog/page-" & n & ".html#main")
            '待機する
            ToolStripStatusLabel1.Text = n
            System.Threading.Thread.Sleep(3000)
            WebBrowser1.Refresh()
        Next


YuO  2011-10-06 19:16:54  No: 147366

UIスレッド上でSleepを使ってはいけませんし,基本的にUIスレッド上で長時間処理させてはいけません。
Application.DoEventsが必要になる書き方もしない方がよいです。

a.) Sleepの代わりにタイマーを使って状態遷移させる
旧Visaul Basic時代からの基本的な作法です。
状態遷移を伴うので,コードがわかりにくくなるのが欠点です。

b.) 別スレッドを立ててUIを触る部分だけUIスレッドに委ねる
状態遷移自体が無くなるので書きやすい代わりに落とし穴も色々ある方法です。
ただし,WinRTでは時間がかかる処理は非同期系のメソッドになっていたりするので,
こちらの方法にある程度慣れておいた方がよいでしょう。

今回の場合だと,BackgroundWorkerを使うのが簡単だと思います。
赤間さんの記事に,コードはC#ですが記事があるので参考にされるとよいと思います。
Blog: Part 4. Visual Studio によるマルチスレッドアプリの開発 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs
http://blogs.msdn.com/b/nakama/archive/2009/04/09/part-4-visual-studio.aspx


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加