线程为:
procedure aa.Execute;
var i:integer;
begin
   inherited;
  freeonterminate := true;
  i:=0;
  { Place thread code here }
  while (true) do
  begin    form1.Edit1.Text:=inttostr(i);
    i:=i+1;
  end;
    end;
end.调用线程procedure TForm1.Button1Click(Sender: TObject);
begin
  bb:=unit2.aa.Create(false);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  bb.Terminate;   不起作用    为什么???????????????       请高手指点end;

解决方案 »

  1.   

    这样写线程代码, 问题比较多, 主要有两个:
    1. 线程中要输出到(操作)界面, 要用synchronize;  // 参见delphi的线程例子代码;
    2. 你的 while (true) do begin... end; 中没有留多少机会给其他线程执行的机会, 你的程序启动后, cpu一定到100%, 而且你用鼠标按button2都很困难;
    3. 建议你先熟悉delphi的线程例子程序, 再多看一些其他人写的线程相关的代码;
    4. 重点提示: 在普通的程序界面操作中要用好application.processmessage; 在线程代码中要用好 Sleep函数;