9得票3回答
TPL数据流块消耗了所有可用内存。

我有一个TransformManyBlock块,其设计如下: 输入:文件路径 输出:文件内容的IEnumerable,每行一个 我正在处理一个超大文件(61GB),因为它太大无法放入内存,所以我将此块和所有下游块的BoundedCapacity设置为非常低的值(例如1)。然而,该块显然...

9得票4回答
使用AsObservable观察TPL Dataflow块而不消费消息

我有一串TPL数据流块,并希望在系统内某处观察进度。我知道可以在想要观察的网格中添加TransformBlock,让其发布到某个进度更新器并将消息未更改地返回给下一个块。但我不喜欢这个解决方案,因为块仅用于副作用,而且我还必须更改任何想要观察的块连接逻辑。因此,我想知道是否可以使用ISourc...

9得票1回答
自定义 ActionBlock<T>

我想实现一个有优先级的 ActionBlock&lt;T&gt;,这样我就可以通过使用 Predicate&lt;T&gt; 条件性地给一些 TInput 项目设置优先级。 我阅读了 Parallel Extensions Extras Samples 和 Guide to Implemen...

9得票1回答
取消数据流管道中的特定项

我正在构建一个 Dataflows 管道,其工作是处理大型文件。每个文件都会被解析、分析和渲染;但每个文件可能会根据其类型在管道中走不同的路径。 此管道的用户界面包括要处理的文件列表、进度条和每个文件旁边的“取消”按钮(当然还有一个添加新文件到队列的按钮)。当用户点击特定文件旁边的“取消”按...

9得票2回答
数百个用户和大文件的良好处理方法

我有几个数据文件(每个文件接近1GB),其中的数据是字符串行。 我需要使用数百个消费者处理每个文件。每个消费者执行的处理与其他消费者不同。消费者不会同时写入任何地方,他们只需要输入字符串。处理后,他们会更新本地缓冲区。消费者可以轻松并行执行。 重要提示:对于一个特定的文件,每个消费者必须按...

9得票1回答
TPL Dataflow如何移除块之间的链接。

我想知道如何去除块之间的链接?换句话说,我想获得与LinkTo相反的效果。 我想基于tlp数据流编写一个记录器。 我编写了这个接口,并希望在需要时删除ILogListener的订阅。 public interface ILogManager { void RemoveListen...

9得票1回答
TPL数据流:固定缓冲区大小而不会丢弃项目

在玩转数据流之后,我遇到了一个新问题。我想限制所有块的输入队列。我的生产块(ActionBlock)非常快地创建5000个元素,并将它们发布到广播块中。因此,如果我将广播块的BoundedCapacity设置为100,则会丢失大量数据。但我更希望生产块等待缓冲块的输入队列中有新的空位。 有没...

9得票1回答
如何在TPL Dataflow中设置/获取/使用块的名称?

MSDN文档显示 DataflowBlockOptions 类中有一个 NameFormat 属性,描述如下: 获取或设置查询块名称时要使用的格式字符串。 那么...如何设置名称?名称在何处可用?什么时候使用? 还是...如我所料...这只是未实现的设计残留吗?

9得票1回答
有界容量的贪婪和非贪婪数据流块之间的区别

我有一个定义了BoundedCapacity的BatchBlock。 var _batchBlock = new BatchBlock&lt;int&gt;(2, new GroupingDataflowBlockOptions ...

9得票1回答
优先级TPL数据流缓冲块

应该是一件非常自然的事情,我想知道TPL DataFlow库中是否有Prioritized BufferBlock的现成实现?