//线程,   为什么我这样做的多线程,文本框中的数字不会连续跳动?
lvThread=class(TThread)
   private
      fTxt:TEdit;
   protected
      procedure Execute;override;
   public
      constructor Create(txt:TEdit);virtual;
end;
var
  Form1: TForm1;implementation{$R *.dfm}
constructor lvThread.Create(txt:TEdit);
begin
   fTxt:=txt;
   FreeOnTerminate:=true;
   inherited Create(false);
end;procedure lvThread.Execute;
var i:integer;
begin
    for i:=1 to 100000 do
      fTxt.Text :=inttostr(i);
end;procedure TForm1.Button1Click(Sender: TObject);
var t1,t2:lvThread;
begin
    t1:=lvThread.Create(edit1);
    t2:=lvThread.Create(edit2);
    t1.Execute ;
    t2.Execute ;
end;为什么我这样做的多线程,文本框中的数字不会连续跳动?

解决方案 »

  1.   

    t1.Execute ;
    t2.Execute ;
    这两句去掉试试!
    或是改成
    t1:=lvThread.Create(edit1);
    end;
    试试看
      

  2.   

    for i:=1 to 100000 do
        begin
          fTxt.Text :=inttostr(i);
          sleep(0);//让cpu喘一下气,即使是0也会喘气的:)
        end;另外,你这里inherited Create(false)传的是False参数,所以以下两行是多余的
        t1.Execute ;
        t2.Execute ;
      

  3.   

    老大,在线程类中操作可视控件要用Synchronize方法,去看看线程类的帮助吧!