我正在开发一个基于 webBrowser 控件的消息传递系统,以便我可以随心所欲地格式化文本。当用户离线并收到消息时,消息将被存储,并在用户重新登录时为每条消息发送一个事件。当我为网站设置默认 html 等时,我通常使用:
while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
当程序正常运行时,此功能有效。当用户在离线状态下接收发送的消息时,这会触发下一条消息事件,依此类推,每条消息直到最后一条。这意味着仅显示离线时发送的最后一条消息。我想要像 Application.DoEvents() 这样的东西,它允许控件不断更新和加载,但不会触发其他事件。
Thanks
EDIT:
我通过完全删除 DoEvents() 解决了这个问题。我没有在工作时更改 DocumentText,而是设置了一个字符串生成器,然后在最后一次性设置了 html。
我建议您停止使用Application.DoEvents()
,它产生的问题多于它解决的问题。查看this.
更好的方法是使用AutoResetEvent
每当加载完成时发出通知,或者在加载完成时引发事件。您也可以在另一个线程上运行等待,因此不必使用Application.DoEvents()
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)