你先新建一个线程Unit,
里边怎么写我就不说了(忘了),自己查书
然后在主Unit里Craate这个线程并设置一个公共变量的值,
线程启动后不断检查上面说的主单元的那个值
如果Value=False退出当主窗口OnShow时把公共变量的值置为False就行了

解决方案 »

  1.   

    这个程序,占用cpu资源极少,(对于你的有大量的数据向服务器端请求的程序没有速度上的影响)只要在你的onshow里调用tmyThread.Terminated :=true;就会中断线程。uses syncobjs
    tmyThread.execute()
    var
       teventTmp :tevent;
    begin
        teventTmp := tevent.Create(nil,true,false,'WaitEvent......');while not Terminated do
        begin
              iWaitFlag:=WAIT_TIMEOUT;
              while iWaitFlag = WAIT_TIMEOUT do
              begin
                  iWaitFlag:=waitforsingleobject(teventTmp,1000);//线程挂起一秒种
                  if terminated = true then   //完成退出
                  begin
                      teventTmp.Free;
                      exit;
                  end;              frmMain.TProgressBar.StepBy(1);          end;
      end;