Je zou eens kunnen kijken naar een TTask in combinatie met een Queue, zie voorbeeldje hieronder:
Code:
unit Unit1;
interface
uses
System.Threading,
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ComCtrls,
Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Task: ITask;
begin
Task := TTask.Create(
procedure
var
I: Integer;
begin
for I := 1 to 100 do
begin
Sleep(300);
TThread.Queue(nil,
procedure
begin
ProgressBar1.Position := I;
end);
end;
end);
Task.Start;
end;
end.
Bookmarks