WF4 - 使用多个ReceiveAndSendReply活动并行时获取异常

时间:2011-10-21 23:10:57

标签: workflow-foundation-4

我有一个场景,并希望使用并行运行的多个ReceiveAndSendReply活动,每个活动都将放入一个无限的while循环,以确保所有活动始终在运行和监听。因此,我使用并行活动来打包所有ReceiveAndSendReply,并将每个ReceiveAndSendReply放入一个条件设置为true的While活动中。因此,我在Receive活动和SendReplyToRecieve活动之间添加了一些业务逻辑活动。 现在我遇到问题,如果在一个分支中处理请求需要很长时间,那么在此期间所有其他分支都将被阻止。任何对其他Receive活动的请求都不会被处理,并且包括一个称为长时间运行服务的客户端和在服务器进程长时间运行服务进程期间调用其他服务的另一个客户端也将获得异常。 有人有想法解决它吗?抱歉,因为我是新用户,可以放置我的工作流程的帖子图片。

1 个答案:

答案 0 :(得分:1)

工作流运行时是单线程的,因为给定的工作流实例仅在任何给定时刻在单个线程上执行。因此,当您的工作流忙于工作时,它无法对其他传入消息做出反应。通常这不是问题,因为工作流通常不是计算密集型的,并且执行异步IO非常容易。有一件事可能会有所帮助,即使用真正的短暂超时添加Delay活动。它们导致工作流暂停,让它开始处理下一个请求。另外,请确保在Receive和SendReply之间放置尽可能少的活动,并在SendReply之后添加一个短暂的延迟。