如何监控OmniThreadLibrary中的Pipeline阶段?

And*_*rew 4 delphi omnithreadlibrary delphi-xe4

是否有可能以某种方式监控管道任务?我试图像这样为每个任务添加监视器

FPipeline := Parallel.Pipeline()
  .Stage(StageWorker1, Parallel.TaskConfig.MonitorWith(MyMonitor))
     .NumTasks(MaxReadThreadCount)
  .Stage(StageWorker2, Parallel.TaskConfig.MonitorWith(MyMonitor))
  .Run();
Run Code Online (Sandbox Code Playgroud)

但获得异常"任务只能用一个监视器监视"(据我所知,这是因为已经为管道阶段安装了内部隐藏监视器).

gab*_*abr 6

使用Parallel.TaskConfig.OnMessage并提供通用的消息处理功能.

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;
Run Code Online (Sandbox Code Playgroud)

MessageProc 可以是正常的程序或方法.