下面是线程调用的函数,如果只调用一次的话可以用,但是放到循环中就不能用了,机器都快死机了
能用的函数:
procedure TfrmMain.Button2Click(Sender: TObject);
var
   TnewThread: TMyThread;
begin
   //for I := 0 to 20 do
   //Begin
      TnewThread := TMyThread.Create(false);
   //End;
end不能用的函数:
procedure TfrmMain.Button1Click(Sender: TObject);
var
   TnewThread: TMyThread;
begin
   for I := 0 to 20 do
   Begin
      TnewThread := TMyThread.Create(false);
   End;
end;帮忙呀,谢谢了:)
感激中

解决方案 »

  1.   

    其实,关键是你的线程做了什么事情,如果很耗资源,或者操作数据库,就可能有问题。
    前者就 
    for I := 0 to 20 do
       Begin
          TnewThread := TMyThread.Create(false);
          Sleep(20);
       End;
    后者就使用临界区吧
      

  2.   

    多个线程应用线程数组。
    还有就是在线程执行的时候应加sleep()。
    procedure Twordopenthread.Execute;
    begin
      sleep(1000);//大小自己设置。必须否则线程抢占太多的系统资源,会死机的。
      ....
    end;