Czy możecie mi pomóc z threads w Lazarus
chce uruchomić procedure1 i procedure2, następnie w procedurze1 odczekać 5s a w procedurze2 odczekać 10s
Program który napisałem działa ale mam wyciek pamięci
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
watek1 = class(TThread)
protected
procedure Execute; override;
procedure Status1;
procedure Status2;
end;
watek2 = class(TThread)
protected
procedure Execute; override;
procedure Status3;
procedure Status4;
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
private
MyThread1: watek1;
MyThread2: watek2;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure watek1.Status1;
begin
form1.Memo1.Lines.Add('start procedure 1 ');
end;
procedure watek1.Status2;
begin
form1.Memo1.Lines.Add('stop procedure 1 ');
end;
procedure watek2.Status3;
begin
form1.Memo1.Lines.Add('start procedure 2 ');
end;
procedure watek2.Status4;
begin
form1.Memo1.Lines.Add('stop procedure 2 ');
end;
procedure watek1.Execute;
begin
Synchronize(@Status1);
sleep(5000);
Synchronize(@Status2);
end;
procedure watek2.Execute;
begin
Synchronize(@Status3);
sleep(10000);
Synchronize(@Status4);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
inherited;
MyThread1 := watek1.Create(True);
MyThread2 := watek2.Create(True);
MyThread1.Start;
MyThread2.Start;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
MyThread1.Terminate;
MyThread2.Terminate;
inherited;
end;
end.