5,392
社区成员
发帖
与我相关
我的任务
分享
unit Unit2;
interface
uses
System.Classes, Vcl.StdCtrls, System.SysUtils;
type
TWork = class(TThread)
private
FLabel: TLabel;
protected
procedure Execute; override;
public
constructor Create(ALabel: TLabel);
end;
implementation
constructor TWork.Create(ALabel: TLabel);
begin
inherited Create(False); //线程启动后立即运行
FreeOnTerminate := True; //线程终止后自动释放内存
FLabel := ALabel;
end;
procedure TWork.Execute;
var
I: Integer;
begin
for I := 1 to 1000000 do
begin
if not Terminated then
begin
Synchronize(procedure //子线程不能直接操作VCL
begin
FLabel.Caption := IntToStr(I);
end);
Sleep(1);
end
else
Break;
end;
Terminate;
end;
end.
//调用方法
Work := TWork.Create(Label2);