书上说,VB无法创建真正意义上的多线程,一般情况下业余做VB程序的也用不上这玩意.
刚做了一个程序,里面用了一个TIMER控件,主要是每隔一分钟去搜索SQL数据库,一旦表中某个值超出警戒值,
则回跳出警告框.问题就来了,在搜索数据库时,主程序窗体就假死.搜索完成以后,程序窗体正常.
TIMER控件应该是独立于主窗体运行的吗?怎么还会出现这种情况.
有什么好点的解决办法呢?
看了下有些大大讲的多线程解决办法,说比较稳定可靠的是用ACTIVEX EXE,不知道有没有这方面的例子.能解决我这个问题吗?

解决方案 »

  1.   

    TIMER控件应该是独立于主窗体运行的吗
    *************
    不是
      

  2.   

    将ADO的连接对象设置为异步方式
      

  3.   

    Timer实现异步,多线程是异步,但Timer不是多线程,有个SetTimerEvent则是.
      

  4.   

    这种情况,原因主要是数据库的操作耗时造成,如果优化数据库查询语句,使其短时内完成,VB界面就不会出现假死状态。
    TIMER不是多线程,仍属于VB界面的控件,等待数据库的响应而出现的假死情况是正常的。
    建议还是优化数据库查询语句为要。
      

  5.   

    http://www.m5home.com/blog/article.asp?id=54这个是使用ActiveX EXE的单元模型多线程.开销大了点,但是日常应用足够了.