我是在C#界面刷新实时数据(相当于一个无限循环)的时候调用了DoEvents(),界面就不会假死了,但是会导致TextBox控件不能输入数据,这个问题能解决吗?
谢谢!

解决方案 »

  1.   

    不要占用主线程做额外的事情。改用其它异步线程处理的,不要用主线程。你调用DoEvents()虽然会让界面(消息甭)轮询一下,但是实际上只会让系统更卡。因为更多的事情堆积在主线程了。所以这可能实际上是画蛇添足的。
      

  2.   

    要记住,不要随便使用DoEvents()。只有在那种“完全不需要异步处理”的地方,而又非要额外地递归处理一次主线程消息甭中消息,你才可能需要用DoEvents()。
      

  3.   

    我在主线程中创建了新的现成来刷新实时数据的,不用DoEvent的话界面会出现假死的现象,所有的按钮都不能点,CPU占用很高!
      

  4.   

    DoEvents的原理是将处理新事件的函数作为当前执行程序的子程序执行。
    如果你的程序使用了全局变量,那么会导致函数重入问题,造成外侧(有DoEvents语句的那方)执行不符合预期。