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

时间:2018-04-20 11:51:19

标签: c# asynchronous blocking

我有一组具有按顺序执行的子任务的任务。但是,我希望子任务按顺序执行,并且仅在清除一组未知阻塞时启动。为了说明问题,我有以下情况:

任务ConsumeIcecream按顺序包含子任务BuyIcecream,OpenIcecream,EatIcecream。这可以在SpoilYourself方法中启动,该方法启动ConsumeIcecream任务。

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

同样,如果你有几个孩子,任务在方法SpoilYourselfWithMultipleKids中开始,那么任务OpenIcecream被几个GiveIvecreamToKid子任务阻止,或者可能还有一些其他子任务,例如: GiveLollipopToKid。

我希望这些任务不知道除了它控制的子任务以及它的顺序之外的所有内容,以及子任务除了一些“有些时候都应该给出的”某些东西“之外的所有东西都不知道”做你想做的事“。我希望该方法在启动任务之前设置依赖关系,但除此之外不知道任务的作用,以便可以轻松地交换或更改它们。

如何实现这一目标?我正在使用C#.net框架4.6.1。我正在考虑来自Reactive扩展场景的Observer / Observable,但这感觉不对,甚至不是AsyncSymbol的东西。有人得到了一些提示吗?

提前致谢。

/ Tryggen

1 个答案:

答案 0 :(得分:0)

我们通过使用可观察模式以及任务和阻止程序列表(id和bool)来解决它。当所有阻断剂都被解决后,任务就开始了,并且每次阻塞器被解决时都会提示尝试启动。 感谢您的提示和想法。