在模板工作流程的顶部,我放置了一个 ReceiveRequest/SendReply block ,我希望在其中执行同步操作,从而使用户客户端能够收到正在启动的工作流程的及时响应。 客户端通过WCF调用WF。
客户端通过我的应用程序数据库上的条目状态了解当前请求的状态。
例如,我创建一个订单,调用 PlaceOrderWF,将数据库上的订单状态设置为“已接受”。然后,客户可以在 WF 进行检查、控制等时执行他想要的任何操作,...,将订单的最终值设置为“已完成”或“错误”。
我希望客户端在 SendResponse block 之后立即收到响应。实际上它似乎不是这样工作的,而是等待某种“事件”来释放客户端。不幸的是,我没有证据表明事件触发了这种行为。
要测试它,只需在 SendResponde 事件之后放置一个 Delay 事件,您应该能够重现我正在讨论的行为。
关于如何避免这种不需要的错误的任何提示?
最佳答案
工作流将继续并在当前线程上尽可能多地执行,因此不会立即返回调用者。如果您向工作流添加一个具有较小超时(例如 1 秒)的延迟,将导致工作流空闲并将 WCF 响应发送到客户端,之后工作流将继续。
关于xaml - WF4 中 SendResponse 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193870/