私はテキストを書式設定できるように、WebBrowserコントロールに基づいてメッセージングシステムを開発しています。ユーザーがオフラインでメッセージを送信すると、メッセージが保存され、再度ログインするとすべてのメッセージに対してイベントが送信されます。通常、次のように使用します。Application.DoEvents()の代わりに
while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
これは、プログラムが正常に動作しているときに機能します。ユーザーがオフラインで送信されたメッセージを受信すると、次のメッセージイベントなどがトリガーされ、最後までメッセージが表示されます。これは、オフライン時に最後に送信されたメッセージだけが表示されることを意味します。 Application.DoEvents()のように、コントロールの更新とロードを継続できるようにしたいが、それは他のイベントをトリガーしない。
おかげ
EDIT:
私は完全に)(DoEvents関数を削除することで問題を修正しました。私が働いていたときにDocumentTextを変更する代わりに、文字列ビルダを設定し、最後にhtmlを一度に設定しました。
あなたが 'Application.DoEvents()'を呼び出すのであれば、通常あなたのデザインに欠陥があることを示します。 「完了」イベントを使用できない理由はありますか? – leppie
私は本質的には、読み込みを終了するにはWebブラウザが必要ですが、現在のスレッドは実行を継続します。私はメッセージを書式設定し、バッキングHTMLをチェックします。 htmlが間違っている場合、私はそれを更新し、メッセージを追加します。私は文書のテキストを変更する前に、Webブラウザが読み込まれていて、読み込みが完了していることを確認します。 –