5

在我的模板工作流的顶部,我放置了一个 ReceiveRequest / SendReply 块,我想在其中执行同步操作,从而使用户客户端能够接收到正在启动的工作流的及时响应。客户端通过 WCF 调用 WF。

客户端通过我的应用程序数据库上的条目状态了解当前请求的状态。

例如,我创建一个订单,调用 PlaceOrderWF,将 DB 上的订单状态设置为“已接受”。然后,客户端可以在 WF 进行检查、控制等时执行他想要的任何操作,...,将订单的最终值设置为“已完成”或“错误”。

我希望客户端会在 SendResponse 块之后收到响应。实际上它似乎并没有以这种方式工作,但它等待某种“事件”来释放客户端。不幸的是,我没有证据表明有事件触发了这种行为。

要对其进行测试,只需在 SendResponde 活动之后放置一个延迟活动,您应该能够重现我正在谈论的行为。

关于如何避免这种不需​​要的错误的任何提示?

WF 模板 -- 操作名称故意留空

4

1 回答 1

5

工作流将继续并在当前线程上尽可能多地执行,因此不会立即返回给调用者。如果您在工作流中添加一个带有小超时(例如 1 秒)的延迟,这将导致工作流进入空闲状态并将 WCF 响应发送到客户端,之后工作流将继续。

于 2010-11-16T12:36:10.240 回答