私はWPF((VB).NETで初めて)に挑戦し、MSAccessVBAで開始したプロジェクトを再作成しようとしています。基本的に、Webアプリケーション内の一連のページをスクレイプします。ご想像のとおり、LoadCompletedイベントで問題が発生しています。
私はそれに関するいくつかの情報を検索して見つけましたが、コードの「フロー」は、1ページがロードされるのを待つのに役立ちます。例えば:
http://social.msdn.microsoft.com/Forums/nn-NO/wpf/thread/52c1bc55-dd41-468c-8759-a42726635d4b
すべてのコード実行はDocumentLoadedイベントで実行されます。これは、1つのページに移動してコードを実行する必要がある場合に正常に機能します。しかし、アプリケーションに対してこれらの一連のサイクルを実行する必要があります。
同じサブでコードの実行を維持し、UIスレッドをロックせずに、ドキュメントが完全に読み込まれるのを確実に待つにはどうすればよいですか?
これが私がやろうとしていることの基本的な考え方です。
- ページに移動
- ページが完全に読み込まれるのを待ちます
- 何かをする
- ページに移動
- すすぎ、繰り返し
PS-.NETは私にとって非常に新しいので、私の脳にスタックオーバーフローを与えないでください;)
ありがとう、ブライアン
-## 編集 ##-
これは私がVBAで行うために使用するものです。これはまさに私がやろうとしていることであり、「。NET」の方法で、UIスレッドをブロックすることはありません。
Dim oIE = New SHDocVw.InternetExplorer
With oIE
.Navigate(strURL)
.Visible = False
' loop until the page finishes loading
Do While oIE.Busy : Loop
Do While oIE.ReadyState <> 4 : Loop
'Code goes here to read DOM, get fields and click a button (logging in to site)
'My code execution is done and now I'm ready to go to the next page and read the DOM
.Navigate(strURL)
End With
。。。。
それでおしまい。n回繰り返します。各DOMとのやり取りは大きく異なります。