一数据库的程序,在程序中有个查询(用TADOQuery),可能会花很长时间,如果按通常的单线程做法,用户会等到不耐烦以为死机了。我想改用多线程编程法,将查询的打开放在一子线程中,这样用户就不会感到死机了,而且用户还可以中断太长的查询。
 请教各位大虾的具体做法,谢谢!

解决方案 »

  1.   

    可以用一个SESSION控件
    或是干脆创建一个线程
      

  2.   

    在线程里定义一个方法就行这个方法,再在线程里定一个指向数据集的引用就行。可以如下写
      TADOThread = class(TThread)
        private
        { Private declarations }
        RS:TADODataSet;
      protected
        procedure Execute; override;
        procedure CallDo;
        constructor Create(ARS:TADODataSet);implementationprocedure TADOThread .CallDo;
    begin
      //RS的一些操作
    end;constructor TADOThread .Create(ARS:TADODataSet);
    begin
    inherited Create(False);
    RS:=ARS;
    end;procedure TADOThread .Execute;
    begin
      inherited;
     Synchronize(CallDo);
    end;