是否有可能以某种方式监控管道任务?我试图像这样为每个任务添加监视器
FPipeline := Parallel.Pipeline()
.Stage(StageWorker1, Parallel.TaskConfig.MonitorWith(MyMonitor))
.NumTasks(MaxReadThreadCount)
.Stage(StageWorker2, Parallel.TaskConfig.MonitorWith(MyMonitor))
.Run();
但是获得异常“任务只能用一个监视器监视”(据我所知,这是因为已经为管道阶段安装了内部隐藏监视器)。
答案 0 :(得分: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;
MessageProc
可以是正常程序或方法。