我也是做这样的事情,但我不会做,惨啊!

解决方案 »

  1.   

    用个TList来管理。
    procedure Form1.Button1Click;
    begin
      for I := 0 to N do
      begin
        My := TMyThread.Create(False);
        List.Add(My);
      end;
    end;Form1中再加一个Lock: TCriticalSection对象,调用时将它Enter,完了再Leave;procedure TForm1.ThreadDoSomeThing(Thread: TMyThread);
    var
      Index: Integer;
    begin
      Lock.Enter;
      try
        Index := FList.IndexOf(Thread);
        if Index <> -1 then
        begin
          with TMyThread(FList[I]) do
          begin
            //这里使用当前过程的线程
          end;
        end;
        //主窗体中让线程调用的过程,通过Lock临界资源的使用来同步各个线程。
      finally
        Lock.Leave;
      end;
    end;
      

  2.   

    可以声明一个互斥量,当前线程占有资源的时候,使其他线程处于挂起状态,