在运用了DOLOOP时,CPU的占用很高~都100%~~
很简单的代码,如:
do 
doevents
if text1.text="ok" then
text2.text="textok!"
else
.....
endif
loop until text3.text="over"为什么这样会使得CPU占用那么高呢?
do 后加doevents 可以让窗口有响应~不至于呆死~
但怎么样才能解决CPU占用不是100%呢??

解决方案 »

  1.   

    为什么要用这个do ... loop 呢?
    用TextBox的 Change 或 LostFocus 事件不能实现吗?
      

  2.   

    呵呵,换种方法,在text3的change\lostfocus中判断
    如:
    private sub text3_change()
    if text1.text="ok" then
    text2.text="textok!"
    else
    .....
    endif
    end sub
      

  3.   

    Dim IfTex3Ok as Boolean   '标志text3是否 ="over"Private Sub Text1_Change()
        if text1.text="ok" and IfTex3Ok=false Then 
                 text2.text="textok!"
                 ... ... 
        else
                 ... ...
        end if 
    End Sub
    Private Sub Text3_Change()
        if text3.text<>"over" then
              IfTex3Ok=true
               ... ...
              exit sub
        else  
             IfTex3Ok=false 
              ... ...  
        end if 
    End Sub
      

  4.   

    crazybeatcode(毛毛的毛) :    这里是讨论问题的地方。要是大家什么都明白,也就没有必要来CSDN了。谁都是从不懂到懂的。
        你能保证你写的代码不会出现低级错误吗?
      

  5.   

    前面的几位解答得都很好,补充一点:在这里,text3最好是换成一个commandbutton,caption="&Over",然后在其click事件中写if text1.text="ok" then text2.text="textok!"这样比较符合习惯。
      

  6.   

    出现死循环了!!!!!
    要用break退出才可以的丫
      

  7.   

    用DOLOOP循环时速度很快CPU一直在作判断,所以CPU占用会很高,你的功能如果可以不用循环,按上面的方法是可以,如果一定要循环判断,可用时间控件来做判断实现循环!这样CPU占用会底点!!!!
      

  8.   

    在循环体中要有可以改变 text3.text 的地方,否则就是死循环的。
      

  9.   

    DoEvents的作用只是处理自身进程积压消息,根本不是现在的VB书上说的“转让CPU控制权”,所以与CPU利用率无关
    只要有程序运行,CPU利用率绝对是100%(除非用汇编不断给CPU发送休眠指令)。
    你到底是要做什么?
    你是不是想使自己的程序少占一点CPU资源?
    这好办,用SetThreadPriority设置线程优先级:
    SetThreadPriority GetCurrentThread(),THREAD_PRIORITY_LOWEST '如果你够慷慨的话,用THREAD_PRIORITY_IDLE