unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyThread =
class
(TThread)
private
i:
Integer
;
procedure
Updt;
protected
procedure
Execute; override;
end
;
TForm1 =
class
(TForm)
Label1: TLabel;
Button1: TButton;
procedure
Button1Click(Sender: TObject);
procedure
FormDestroy(Sender: TObject);
private
FMyThread: TMyThread;
public
end
;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure
TMyThread
.
Execute;
begin
i:=
0
;
while
not
Terminated
do
begin
Synchronize(Updt);
Inc(i);
if
i>
100
then
Break;
Sleep(
50
);
end
;
end
;
procedure
TMyThread
.
Updt;
begin
Form1
.
Label1
.
Caption:=IntToStr(i);
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
FormDestroy(Sender);
FMyThread:=TMyThread
.
Create(
True
);
FMyThread
.
FreeOnTerminate:=
False
;
FMyThread
.
Resume;
end
;
procedure
TForm1
.
FormDestroy(Sender: TObject);
begin
if
FMyThread<>
nil
then
begin
FMyThread
.
Terminate;
FMyThread
.
WaitFor;
FreeAndNil(FMyThread);
end
;
end
;
end
.