
for example when I use it to search file, I hope it could return the filename as feedfack
procedure TForm1.FormCreate(Sender: TObject);
begin
BackgroundWorker1.Execute;
end;
procedure TForm1.BackgroundWorker1Work(Worker: TBackgroundWorker);
var
I: Integer;
begin
for I := 1 to 999 do
begin
Worker.Tag := I;
Worker.ReportFeedback(0, I);
end;
end;
procedure TForm1.BackgroundWorker1WorkFeedback(Worker: TBackgroundWorker;
FeedbackID, FeedbackValue: Integer);
begin
ListBox1.Items.Add(Format('%d - %d', [FeedbackValue, Worker.Tag]));
end;
uses
SyncObjs;
var
SyncFeedback: TEvent;
procedure TForm1.FormCreate(Sender: TObject);
begin
SyncFeedback := TEvent.Create(nil, True, True, '');
BackgroundWorker1.Execute;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(SyncFeedback);
end;
procedure TForm1.BackgroundWorker1Work(Worker: TBackgroundWorker);
var
I: Integer;
begin
for I := 1 to 999 do
begin
Worker.Tag := I;
SyncFeedback.ResetEvent; // reset the event, we are going to wait for it to be set
Worker.ReportFeedback(0, I);
// some code that do not affect the synchronization can be here
SyncFeedback.WaitFor(INFINITE); // wait for event to be set
end;
end;
procedure TForm1.BackgroundWorker1WorkFeedback(Worker: TBackgroundWorker;
FeedbackID, FeedbackValue: Integer);
begin
ListBox1.Items.Add(Format('%d - %d', [FeedbackValue, Worker.Tag]));
SyncFeedback.SetEvent; // set the event, so that thread continues
end;
uses
SyncObjs;
var
SyncFeedback: TEvent;
procedure TForm1.FormCreate(Sender: TObject);
begin
SyncFeedback := TEvent.Create(nil, True, True, '');
BackgroundWorker1.Execute;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(SyncFeedback);
end;
procedure TForm1.BackgroundWorker1Work(Worker: TBackgroundWorker);
var
I: Integer;
begin
for I := 1 to 99 do
begin
Worker.Tag := I;
SyncFeedback.ResetEvent; // reset the event, we are going to wait for it to be set
Worker.ReportFeedback(0, I);
// some code that do not affect the synchronization can be here
SyncFeedback.WaitFor(INFINITE); // wait for event to be set
end;
end;
procedure TForm1.BackgroundWorker1WorkFeedback(Worker: TBackgroundWorker;
FeedbackID, FeedbackValue: Integer);
begin
ListBox1.Items.Add(Format('%d - %d', [FeedbackValue, Worker.Tag]));
SyncFeedback.SetEvent; // set the event, so that thread continues
end;
Return to DELPHI AREA Projects
Users browsing this forum: No registered users and 1 guest