Skip to content

Instantly share code, notes, and snippets.

@jkour
Last active January 28, 2017 12:43
Show Gist options
  • Save jkour/4263ddf4cb97ae3b40b548593f992dfa to your computer and use it in GitHub Desktop.
Save jkour/4263ddf4cb97ae3b40b548593f992dfa to your computer and use it in GitHub Desktop.
unit Unit4;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo;
type
TUpdate = procedure (const text: string) of object;
TDemo = class
private
fUpdate: TUpdate;
public
constructor Create (const aUpdate: TUpdate);
end;
TForm4 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
fDemo: TDemo;
procedure update (const text: string);
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses
System.Threading;
{$R *.fmx}
{ TDemo }
constructor TDemo.Create (const aUpdate: TUpdate);
var
dbTask: ITask;
dbTaskArray: array [0..0] of ITask;
begin
fUpdate:=aUpdate;
dbTask:=TTask.Create(
procedure
var
i: Integer;
begin
for i := 0 to 10 do
begin
TThread.Queue(nil,
procedure
begin
fUpdate(I.ToString);
end);
end;
end
);
dbTaskArray[0]:=dbTask;
dbTask.Start;
TTask.WaitForAll(dbTaskArray);
end;
procedure TForm4.FormDestroy(Sender: TObject);
begin
fDemo.Free;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
fDemo:=TDemo.Create (update);
end;
procedure TForm4.update(const text: string);
begin
Memo1.Text:=text+sLineBreak+Memo1.Text;
end;
end.
@ortuagustin
Copy link

Try this

constructor TDemo.Create(const aUpdate: TUpdateProc);
var
  dbTask: ITask;
begin
  FUpdateProc := aUpdate;
  dbTask := TTask.Create(procedure
    begin
      TParallel.For(0, 10, procedure(Arg1: Integer)
        begin
          TThread.Queue(nil, procedure
            begin
              FUpdateProc(Arg1.ToString);
            end);

        end)
    end);

  dbTask.Start;
  dbTask.Wait;
end;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment