//线程, 为什么我这样做的多线程,文本框中的数字不会连续跳动?
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;为什么我这样做的多线程,文本框中的数字不会连续跳动?
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;为什么我这样做的多线程,文本框中的数字不会连续跳动?
t2.Execute ;
这两句去掉试试!
或是改成
t1:=lvThread.Create(edit1);
end;
试试看
begin
fTxt.Text :=inttostr(i);
sleep(0);//让cpu喘一下气,即使是0也会喘气的:)
end;另外,你这里inherited Create(false)传的是False参数,所以以下两行是多余的
t1.Execute ;
t2.Execute ;