线程单元代码:type
  sortthread = class(TThread)
  private
    fmemo:Tmemo;
    procedure add();
  protected
    procedure Execute; override;
  public
  constructor create(memo:Tmemo);
  end;constructor sortthread.create(memo:TMemo);
begin
   inherited create(true);
   fmemo:=memo;
end;procedure sortthread.add;
var
i:integer;
begin
  for i:=0 to 40000 do
  begin
  fmemo.Lines.Clear;
  fMemo.lines.add(inttostr(i));
  end;
end;procedure sortthread.Execute;
begin
  while not terminated do synchronize(add);
end;主程序调用代码:
sortthread.create(memo1);

解决方案 »

  1.   

    可以了,create(false)就可以了晕,为什么是true就不可以啊
      

  2.   

    for i:=0 to 40000 do
      begin
      fmemo.Lines.Clear;// 问题在这里,每次都清掉了,就放在循环外面
      fMemo.lines.add(inttostr(i));
      end;
      

  3.   

    原型:
    constructor Create(CreateSuspended: Boolean);CreateSuspended表示,线程创建后是否Suspend,
    执行 inherited create(true)时,fmemo还没有赋值,
    你跟踪一下就明白了。
      

  4.   

    fmemo.Lines.Clear;// 问题在这里,每次都清掉了,就放在循环外面
    for i:=0 to 40000 do
     fMemo.lines.add(inttostr(i));