2016-09-25 92 views
2

如何限制数据流网格中的TransformManyBlockDataflow TransformManyBlock限制

我指定了一个BoundedCapacity,但它看起来只能影响输入队列。
所以我的块不断处理输入和输出队列不断增长。

以下块也指定了BoundedCapacity,然后我的所有物品都堆积在TransformManyBlock的输出队列中,吃掉我所有的RAM。

回答

0

是的,你是对的,并没有内置的机会限制输出队列。这样做的方式会有更多的开销检查,输出队列是否满了。

你应该检查的一件事是用于添加消息的方法。如果它是Post,它将在邮件发布之前阻塞该线程。但是,如果您使用的是SendAsync,那么您应该使用await,否则,您将使用await状态机和处于发布过程中的消息泛滥您的RAM。

然而,至少有两件事情可以做:

  1. 创建具有这样的属性自定义块。这可能是具有挑战性的,我不建议这样做。
  2. 在您的连锁店中引入BufferBlock用于此目的 - this is default way在数据流中添加一些限制。在这种情况下,如果没有地方,消息不会在数据流上继续传播。如果您在彼此之间链接您的块,此解决方案将工作。