在执行之前等待一组未知的阻止程序

Await an unknown set of blockers before executing

我有一组任务,其中的子任务按顺序执行。但是,我希望子任务按顺序执行,并且仅在清除一组未知的阻塞程序时才开始。为了说明问题,我有以下场景:

ConsumeIcecream 任务由子任务 BuyIcecream、OpenIcecream、EatIcecream 依次组成。这可以在启动 ConsumeIcecream 任务的 SpoilYourself 方法中启动。

另一个任务,LetKidConsumeIcecream 有类似的子任务:BuyIcecreamForKid、OpenIcecreamForKid、GiveIcecreamToKid、KidEatsIcecream。这些都可以在 SpoilYourselfWithKid 方法中启动,并行启动这两个任务。不过,这有一个障碍,因为 OpenIcecream 子任务不能在另一个任务 GiveIcecreamToKid 中的子任务完成之前完成,因为每个人都知道你不能在孩子得到他们想要的东西之前放纵自己。

同样,如果您有多个孩子,任务在方法 SpoilYourselfWithMultipleKids 中启动,则任务 OpenIcecream 会被多个 GiveIvecreamToKid 子任务或其他一些子任务阻塞,例如GiveLollipopToKid.

我希望任务对所有事情一无所知,但它控制哪些子任务及其顺序,并且子任务除了 "somethings" 的列表之外什么都不知道"Go on, do what you want"。我希望在开始任务之前设置依赖关系的方法,但除此之外不知道任务的作用,以便可以轻松地交换或更改它们。

如何实现?我正在使用 C# .net 框架 4.6.1。我在考虑 Reactive 扩展方案中的 Observer/Observable,但感觉不对,甚至 AsyncSymbol 的东西也不对。有人有什么建议吗?

提前致谢。

/特里根

我们通过使用可观察模式以及任务和阻止程序列表(id 和 bool)来解决它。任务在解决所有阻塞程序时启动,并在每次解决阻塞程序时提示尝试启动。 感谢您的提示和想法。