Application.DoEvents()的替代方案

Nat*_*ist 5 c# browser messaging doevents winforms

我正在开发一个基于webBrowser控件的消息传递系统,这样我就可以格式化文本了.当用户离线并发送消息时,将存储消息并在重新登录时为每条消息发送事件.当我为网站设置默认html等时,我通常使用:

while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
Run Code Online (Sandbox Code Playgroud)

这在程序正常运行时有效.当用户正在接收他们离线时发送的消息时,这将触发下一个消息事件,依此类推,每个消息一直到最后一个消息.这意味着它们脱机时发送的最后一条消息是唯一显示的消息.我想像Application.DoEvents()这样的东西允许控件不断更新和加载,但这不会触发其他事件.

谢谢

编辑:

我通过完全删除DoEvents()来解决问题.我没有像我工作那样更改DocumentText,而是设置了一个字符串构建器,然后在最后设置html all.

Jal*_*aid 5

我建议你停止使用Application.DoEvents(),它产生的问题比它解决的更多.检查一下.

更好的方法是AutoResetEvent在加载完成时使用an 通知,或者在加载完成时通过引发事件.你也可以在另一个线程上运行等待,所以不必使用Application.DoEvents()...