但是,我已经在Onclose中加入了:
        for i:=0 to MaxThreads-1 do begin
            ThreadsObjects[i].Terminate;
            ThreadsObjects[i].Resume;
        end;
在线程的Execute中是:
 while not terminated do begin
        ......
        adoct.Connected:=false;
        suspend;
        adoct.Connected:=true;
 end;
 adoct.Connected :=false;
 adoqt.free;
 adoct.free;

解决方案 »

  1.   

    每个线程不能共享ADOConnect和ADOQuery的同一实例
      

  2.   

    我是在每个线程中创建ADOConnect和ADOQuery的。
        try
            inherited create(suspended);
            freeonterminate:=true;
            threadid:=i;
            adoct:=TADOConnection.Create(nil);
            adoqt:=TADOQuery.create(nil);
            adoct.ConnectionString:=form1.ADOC_main.ConnectionString;
            adoct.LoginPrompt :=False;
            adoct.Mode:=cmShareDenyNone;
            adoct.Provider :=form1.ADOC_main.Provider;
            adoqt.Connection :=adoct;
            adoct.Connected :=true;
        except
            form1.M_send.Lines.Add('线程'+inttostr(i)+'创建失败!');
        end;