C#中Application.DoEvents()问题请教

skylixd 2013-01-13 12:45:51
我是在C#界面刷新实时数据(相当于一个无限循环)的时候调用了DoEvents(),界面就不会假死了,但是会导致TextBox控件不能输入数据,这个问题能解决吗?
谢谢!
...全文
629 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
skylixd 2013-01-13
  • 打赏
  • 举报
回复
我在主线程中创建了新的现成来刷新实时数据的,不用DoEvent的话界面会出现假死的现象,所有的按钮都不能点,CPU占用很高!
  • 打赏
  • 举报
回复 1
要记住,不要随便使用DoEvents()。只有在那种“完全不需要异步处理”的地方,而又非要额外地递归处理一次主线程消息甭中消息,你才可能需要用DoEvents()。
  • 打赏
  • 举报
回复
不要占用主线程做额外的事情。改用其它异步线程处理的,不要用主线程。 你调用DoEvents()虽然会让界面(消息甭)轮询一下,但是实际上只会让系统更卡。因为更多的事情堆积在主线程了。所以这可能实际上是画蛇添足的。
devmiao 2013-01-13
  • 打赏
  • 举报
回复
DoEvents的原理是将处理新事件的函数作为当前执行程序的子程序执行。 如果你的程序使用了全局变量,那么会导致函数重入问题,造成外侧(有DoEvents语句的那方)执行不符合预期。
strife013 2013-01-13
  • 打赏
  • 举报
回复
创建了新的现成来刷新实时数据,应该不会造成界面假死,肯定是你在其它地方一直刷新界面, 改成接受数据后再刷新

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧