Use Parallel.TaskConfig.OnMessage and provide a generic message processing function.
FPipeline := Parallel.Pipeline() .Stage(StageWorker1, Parallel.TaskConfig.OnMessage(MessageProc)) .NumTasks(MaxReadThreadCount) .Stage(StageWorker2, Parallel.TaskConfig.OnMessage(MessageProc)) .Run(); procedure MessageProc(var msg: TOmniMessage); begin ... end;
MessageProc can be a regular procedure or method.
source share