1,184
社区成员
发帖
与我相关
我的任务
分享
var
count : integer ;
procedure MyThread.SynchroEvent1;
var
WaitReturn : DWord ;
I:Integer;
begin
FLabel.Caption:=IntToStr(count );
//移动这里是因为 vcl 调用不能在线程中进行,只能在主线程进行; 当然,在主线程进行时,会占用 cpu 时间,所以会产生你说的 卡住的问题
For I:=0 to 99999999 do Form1.Label3.Caption :=Inttostr(I);
end;
constructor MyThread.Create(lbl:TLabel;sleepSec:Integer); //参数传递
begin
FLabel:=lbl;
FSleepDec:=sleepSec;
FreeOnTerminate:=True; //让线程终止是触发OnTerminate事件
inherited Create(True);//不立即执行,只有调用resume才开始
end;
procedure MyThread.Execute;
begin
for count:=0 to 1000 do
begin
if Terminated then Break;
Sleep(FSleepDec);
SynchroEvent1;
end;
end;