私はかなりの時間を調べましたが、誰もが Web ブラウザーが非同期で動作していると言っていることに気付きました。Navigate をトリガーし、documentComplete イベントを実装しても何も起こらないため、それは間違っていると思います。
メイン スレッド (Web ブラウザーを所有するスレッド) がジョブを実行したときにのみ、Web ブラウザーがナビゲートを開始することに気付きました。おそらく、その後、ブラウザーはメイン スレッドを使用してコマンドを実行するためです。
タイミングを制御できるようにしたいので、これは良くありません。Webブラウザーがページの読み込みをいつ完了したかを知り、作業を続行できるようにしたいと考えています。先に言ったように、ここではポーリングが機能しません。Web ブラウザーはナビゲートを開始しません。
例:
WebBrowser browser = new WebBrowser();
browser.Navigate(url);
while(browser.ReadyState != WebBrowserReadyState.Complete)
{
}
// Then executing the next steps...
WebBrowser を同期的に使用して、WebBrowser のドキュメント プロパティやその他のものを使用できるようにするにはどうすればよいですか。ある種のブロッキング メソッドを作成したいので、WebBrowser がいつロードを完了したかを制御して知ることができます。