unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ThreadUnit, ComCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
ProgressBar1: TProgressBar;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Thread :TMyThread;
FlagThreadStop: boolean = False;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
FlagThreadStop:= not FlagThreadStop;
if FlagThreadStop then
begin
Thread.Resume;
Button1.Caption:= 'Stop It'
end
else
begin
Thread.Suspend;
Button1.Caption:= 'Run Thread'
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Thread:= TMyThread.Create(true);
Thread.Priority := tplower;
//Thread.Priority := tpNormal;
//Thread.FreeOnTerminate:=True; //Это ошибочное действие
Thread.Resume;
Thread.Suspend
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
////Возобновим поток если они приостановлен
if Thread.Suspended then Thread.Resume;
//Посылаем требование завершиться
Thread.Terminate;
//Уничтожаем объект
Thread.Free;
//Закрываем приложение
Form1.Close;
end;
initialization
ReportMemoryLeaksOnShutdown := True;
end.