Let's look at the code now. The user interface has one button that can both start and stop the parallel operation. It's OnClick event is shown as follows. When starting the process, it calls the CreatePipeline method. To stop the process, it just calls the pipeline's Cancel method. The pipeline object will be destroyed later, through a termination event. I'll return to that part later.
procedure TfrmPipeline.btnStartClick(Sender: TObject);begin if btnStart.Tag = 0 then begin ListBox1.Items.Add(inpStartFolder.Text); CreatePipeline; btnStart.Caption := 'Stop'; btnStart.Tag := 1; TimerUpdateProcessing.Enabled := true; end else if assigned(FPipeline) then FPipeline.Cancel;end;
The CreatePipeline method (shown as follows) ...