首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Application.DoEvents()的替代方法

Application.DoEvents()的替代方法
EN

Stack Overflow用户
提问于 2011-07-19 22:20:41
回答 2查看 20K关注 0票数 5

我正在开发一个基于webBrowser控件的消息系统,以便我可以随心所欲地格式化文本。当用户离线并收到消息时,将存储这些消息,并在用户重新登录时为每条消息发送一个事件。当我为网站设置默认html之类的内容时,我通常使用:

代码语言:javascript
复制
while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

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

谢谢

编辑:

我通过完全删除DoEvents()修复了这个问题。我没有在工作时更改DocumentText,而是设置了一个字符串构建器,然后在最后一次性设置所有html。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-19 22:59:46

我建议你停止使用Application.DoEvents(),它产生的问题多于解决的问题。检查this

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

票数 6
EN

Stack Overflow用户

发布于 2011-07-19 22:49:04

您可以使用System.Threading.Thread.Join()作为DoEvents()的替代方法,因为此方法会暂停当前线程的执行,直到前面的调用线程完成执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6748702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档