c# - 如何触发依赖于其他 2 个或更多并行事件完成的事件?

标签 c# .net multithreading workflow-foundation-4 messaging

我是工作流基础的新手。我正在尝试构建一个 .NET 4 控制台应用程序。这可以分为许多任务。这是任务的性质。

  1. 很少有任务相互独立并且可以并行运行。
  2. 很少有任务会产生两个或更多新任务。
  3. 很少有任务依赖于其他并行运行的任务的输出,并且只有在它们完成或提供所需输入时才能启动。 例如 enter image description here

这里

  1. 任务 1、2 和 3 是独立的。 因此可以并行运行。
  2. 任务 4 完成后生成 5 和 6
  3. 任务 7 只有在任务 4 和 2 已完成。

虽然我可以使用系统线程和一些消息传递来编写自己的框架来完成上述工作,但我想知道我是否可以利用工作流基础 4。

我浏览了几个有关工作流的示例,但我无法弄清楚如何在并行运行的父事件完成时触发新事件。

此外,如果您知道解决上述问题的任何其他方法,请告诉我。

最佳答案

通常,您将这些依赖任务移到 Parralel 事件下方,这样您就知道所有依赖都已满足。

更新: 从序列开始。在一侧添加任务 1 和 4,在另一侧添加任务 3。下面添加另一个包含 5,6 和 7 的 3 个分支的 Parallel。

如果任务 2 比任务 1 + 4 花费的时间更长,则情况并不完全相同。

[Ankush]所以你的建议是这样的 enter image description here

关于c# - 如何触发依赖于其他 2 个或更多并行事件完成的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416672/

相关文章:

c++ - 扩展选择目录对话框

c# - 如何使用 xml reader 获取innerXML属性值

C# 将非模态形式放在模态形式前面?

c# - 如何在 c# 中模拟鼠标点击,这将在游戏中起作用?

c# - 为什么 C# 不能正确绑定(bind)泛型覆盖方法?

c# - Visual Studio Indent 做了奇怪的事情

java - setBackgroundResource 未设置图像

c# - 既然有SpinWait,为什么还要使用SpinLock呢?

c# - 在 C# 中使用数据集的更好方法

C 读和线程安全 (linux)