没碰过,不过我写过多线程ADO连接时是每个线程用一个ADOConnection的,另外要记得执行CoInitialize/CoUninitialize。

解决方案 »

  1.   

    BDE中每一个线程需一个独立的TSession,同样,当然也就需一个独立的ADOConnection
      

  2.   

    每个线程都要有DataModule1的实例
    不能只用一个
      

  3.   

    那不是很没效率?每个连接都要connection一次?
      

  4.   


      函数中的所有类似ADOTable、ADOQuery等控件都是在函数中动态产生实例并释放,  你是不是,在线程中动态产生实例并释放ADOTable、ADOQuery,其实最有效的方法是,做一个连接池,线程需要的时候同步取一个ADOTable或ADOQuery构件,这样的效率最高,而且应该没有上述问题,。
      动态产生实例并释放,要消耗相当一部分时间。
      
      我估计,产生上述问题的最主要的原因是,ADOConnection不是一个线程安全的构件,多线程访问的时候,需要同步。
      

  5.   

    如果有4个线程的话,就有4个ADOConnection,这是我做的一个通信程序
      

  6.   

    我搞明白了,这和用ASP做BBS一样的原理,有多少用户就要有多少相session。所以现在我的解决方法是在每个线程中创建ADOConnection,但这样服务器开销就大了,但也没办法了。来者得分!!!!!!!!!:)