这样写,算开一个县城还是开了10个县城呢?type
  basethread = class(TThread)
    protected
      { Private declarations }
      procedure Execute;OverRide;
      procedure myfunc; virtual; abstract;
    private
      { Private declarations }
    public
      { Public declarations }
      Constructor Create();
  end;type
  mythread = class(basethread)
    protected
      procedure myfunc; override;
  end;Constructor basethread.Create();
begin
  FreeOnTerminate:=True;
  Inherited Create(False);
end;
procedure mythread.myfunc;
begin
  //
  while Complete < InSertCount do
  begin
    //do something
  end;
end;procedure InsertUser.Execute;
var
  i:integer;
begin
  for i:=0 to 9 do
  begin
    myfunc;
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  SQLThread.Create()
end;

解决方案 »

  1.   

    procedure mythread.myfunc;
    begin
      //
      while Complete < InSertCount do
      begin
        InterlockedIncrement(Complete);//加上这个,可能直观一点
        //do something
      end;
      InterlockedDecrement(ThreadCount);//还在工作的县城
    end;
    这里是循环到所有工作完成,比如工作有100个,
    窗体上是创建了1个县城,但是县城里面控制了10个循环。这样做有没有10个县城的效果呢?
      

  2.   

    单个线程内部的代码当然还是顺序执行了
    Create几个线程就是几个,一个线程一个实例