我编写了一个小计算程序,计算的过程可能会需要几分钟,为了不让用户认为是死机了,所以我打算在开始计算时弹出一个窗体。显示“正在计算,请等待”然后在后面循环的显示“。”号,既“。”号由一个时钟控件控制,每秒显示一个,从左到右依次增加,到了有10个后“。”号全部隐藏,然后再次从左到右依次增加。
    开始计算时用该语句加入此窗体:
    Load frmWait
    frmWait.Show 1
    Doevents
    计算完毕之后用该语句关闭此窗体:
    Unload frmWait
    现在的问题是一旦载入该窗体之后由于要循环的显示“。”号,可能CPU一直工作于显示“。”号了,没有执行我的计算程序,所以我的程序就一直显示着此窗体一直这样下去了!!!!
    我该怎样才能在显示此窗体的同时也执行我的计算程序呢?
    望得到大家的帮助,谢谢大家了!

解决方案 »

  1.   

    frmWait.Show 1时程序不会执行后面的
    --Doevents
        计算完毕之后用该语句关闭此窗体:
        Unload frmWait
      

  2.   

    你上面的需求似乎是无法通过VB来实现的
    上面的需求只能通过多线程来实现
    可是VB是不支持多线程的!!
    我以前也碰到多类似的问题,挺无奈的
      

  3.   

    除非你要做的计算使用另外一个进程来计算,前台的vb程序通过socket或管道或共享文件之类的通信方式来通信
    才可以解决你所面临的问题
      

  4.   

    没有他们说的那么复杂
    给个Email
    我发一个给你看看
      

  5.   

    我的Email:[email protected]
    望得到大家的帮助!
      

  6.   

    timer控件
    或计算过程中每计算一层或一遍就加. 到n次重新.
      

  7.   

    to dandelionl(飘) :
    好点子,我怎么就没有想到呢???我真笨呀!
      

  8.   

    我也遇到过同样的情况,这个问题不是那么容易就解决的。
    用timer是解决不了的。例如一个集成到Dll中的一个方法。
    当他执行的时候,程序的timer根本就不被执行了,直到Dll中的方法执行完毕。
    哪为老大,提供更好的解决方案?
      

  9.   

    利用VB建立多线程:http://www.applevb.com/sourcecode/vbthread.zip
    http://community.csdn.net/Expert/topic/3280/3280636.xml?temp=.5612451