如何向当前正在执行工作流实例的 WorkflowServiceHost 添加和删除 TrackingParticipant,或者更改该主机的现有 TrackingParticipant 的 TrackingProfile?
我需要这样做的原因是 WorkflowServiceHost 正在我们系统中的某些事件上执行工作流,因此它可能同时运行多个工作流。现在,我需要在运行时启用对这些活动的跟踪,以便根据用户请求进行诊断,然后在用户不再需要它们时再次禁用它们。我无法重新启动主机,因为工作流程可能运行时间很长。但是,向已与工作流关联的 WorkflowServiceHost 添加扩展会引发异常。TrackingParticipant 的 TrackingProfile 似乎只能在构造时更改(?)。
一种方法是简单地让我的 TrackingParticipant 有一个布尔标志,指示它是否已启用,然后让它始终跟踪所有内容,但如果禁用,则对它们不做任何事情。但是,当我尝试这样做时,性能影响是不可接受的。让一个在其 Track 方法中完全没有做任何事情的跟踪参与者使得由一个简单的 while 循环组成的示例工作流需要 10 倍的时间来执行。
那么有什么方法可以在这里完成我想要的吗?如果没有,为什么不呢?