【问题标题】:Executing Body inside an async task在异步任务中执行 Body
【发布时间】:2011-11-25 21:13:42
【问题描述】:

这让我发疯了,也许有人已经击中了这个。我有一个复合活动,它执行一些 I/O。它有多种其他活动,我真的不在乎我的主要流程中的结果。我想我可以用一个非常简单的方法来构建一个支持 itemcontainer 的设计器的代码活动,放下我的工作并忘记那里的工作流程,然后触发异步。似乎我不能,因为 asynccodeactivity 不支持子活动——顺便说一句,有人知道这是为什么吗?

无论如何,有没有办法构建一个序列式的活动,在我的主要流程进行其业务时,该序列将在一个单独的线程上嗡嗡作响,无论需要多长时间(在这种情况下为 30-60 秒)?

【问题讨论】:

    标签: .net c#-4.0 workflow-foundation-4


    【解决方案1】:

    正如您所说,没有办法将子活动放在异步活动中。您只能使用AsyncCodeActivityAsyncCodeActivity(Of TResult) 进行代码活动。

    不管怎样,你为什么不用Parallel?在一个分支中执行异步代码活动,在另一个分支中执行工作流的其余部分。

    【讨论】:

    • 真的,我试图绕过一些不同的东西。我有一个接收活动,然后是一个发送活动,它返回工作流 id 以进行跟踪。在那之后,以同样的顺序,我有我的长期运行的东西。出于某种原因,在序列的其余部分完成之前,似乎 send 实际上并没有将消息发回(或者至少没有解除对客户端应用程序的阻止)。我真正需要的是立即取回该 ID,并让它运行其余部分。异步是我的方法,我对其他建议持开放态度。不能真正并行,接收获取我需要的变量..跨度>
    • 你回复两次了吗?一个带有 workflowInstanceId 和另一个在序列末尾?无论哪种方式,如果您没有收到带有 workflowInstanceId 的第一条消息,则说明工作流的特定部分有问题。
    • 我有一个并行活动,里面有两个序列,每个序列都有; 1. 接收(每个不同的活动) 2. 回复 3. 延迟(60 秒)。我只在 60 秒后收到回电..
    • 如果这是您的工作流程,那没有任何问题。您应该收到这两条消息,并且延迟继续在服务端工作。也许您的客户出了问题或消息合同有问题,如果没有某种异常消息,就无法真正分辨出来。
    • 奇怪的是,甚至没有真正的合同可以说出来,只是接受一个 int 参数并返回一个 int 变量。没有异常被抛出,什么都没有。如果我将延迟交换为执行 thread.sleep(5000) 并计时调用的代码活动,它们都需要 5000-7000 毫秒。阅读本文:codeproject.com/KB/WF/WF4Extensions.aspx 我想知道我是否需要坚持发送响应?这是一个 xamlx 服务而不仅仅是主机中的 WF 是否重要?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 2018-08-18
    相关资源
    最近更新 更多