有一线程,每隔8秒钟创建30个,每个线程实例有一个ADOQuery,ADOQuery的Connection指向Form1中的ADOConnection,线程执行完毕后,ADOQuery会销毁。可是程序每次运行几分钟后就报错,都是一些内存地址的错误。不知道是不是多线程中不能采用这种模式?请求各位大虾的帮助

解决方案 »

  1.   

    一个线程最好拥有单独的ADOConnection
      

  2.   

    不能,ADO控件是非线程安全的,每个线程都要建立自己与数据库的封闭对话。
      

  3.   

    单独使用adoconnetion,不要和主线程使用同一个,这样发生冲突的可能性很大
      

  4.   

    每个线程要使用单独的adoconnection
    不过你这个运行几分钟后才报错,是不是还和其它的有关
      

  5.   

    在线程中使用VCL,代码要同步的,就用那个同步函数
      

  6.   

    用一个池来管理CONNECTION.不会的话,直接每个DATASET都建立一个单独的会话(CONNECTION)连接.不过像你这样建DATASET没几个就会出错了.有时是MSSQL连接数的限制
      

  7.   

    线程最好使用单独的CONNECTION,因为冲突的可能性太大了,而且出了错还找不到原因...当初我也犯过这种错..嘿嘿