tpl-dataflow

    1热度

    1回答

    数据流库有这个选项我试图理解:ExecutionDataflowBlockOptions.SingleProducerConstrained 我放在一起的这一个测试的功能。令我惊讶的是,它似乎放弃了信息。为什么这不会抛出异常而不是丢弃消息? [TestMethod] public void ExecutionDataflowOptions_SingleProducerConstrained()

    1热度

    3回答

    我已经开始学习TPL Dataflow。我正在努力找到Task.ContinueWith和数据流之间的区别。以下是两个具有相同目标的样本代码。首先用Task.ContinueWith以及后来的数据流完成。 下面是与Task.ContinueWith var tk1 = Task.Run(() => { Console.WriteLine("Entered 1st Task");

    0热度

    1回答

    我正在使用TPL Dataflow,并且需要实现我自己的操作块。 该操作块应接受来自两个不同输入块的消息,将这些消息放入单个队列中,然后按顺序处理该队列。这里的重点是两个不同的任务不应该同时执行,我不想使用锁。 这是我的解决方案,但它不能正常工作。 public class OrderedActionBlock<TInputLhs, TInputRhs> : IDataflowBlock

    1热度

    1回答

    我有一个由多个块组成的Dataflow流水线。 当元素流经我的处理管道时,我想按字段A将它们分组。要做到这一点,我有一个BatchBlock与高BoundedCapacity。在这里我存储了我的元素,直到我决定将它们释放。所以我调用TriggerBatch()方法。 private void Forward(TStronglyTyped data) { if (ShouldCreate

    2热度

    1回答

    如何限制数据流网格中的TransformManyBlock? 我指定了一个BoundedCapacity,但它看起来只能影响输入队列。 所以我的块不断处理输入和输出队列不断增长。 以下块也指定了BoundedCapacity,然后我的所有物品都堆积在TransformManyBlock的输出队列中,吃掉我所有的RAM。

    0热度

    1回答

    我有一个问题,有关缓冲区块卸载到持久回购在C#中。 如果我理解正确,BufferBlock将所有消息保存在内存中。 现在我想要防止突发模式,崩溃或程序关闭时丢失这些消息。 是否有可能(无需自定义实现)卸载/备份持久回购中的所有待处理消息,以便稍后将其加载到BufferBlock中?

    5热度

    2回答

    我在我的应用程序中实现了使用TPL Dataflow的生产者/消费者模式。我有大约40个块的大数据流网格。网格中有两个主要的功能部分:生产者部分和消费者部分。有时,消费者在处理来访工作时应该连续为生产者提供大量的工作。当消费者忙于某些指定数量的工作项目时,我想暂停生产者。否则,应用会消耗大量的内存/ CPU,并且行为不可持续。 我做了演示应用程序演示了这个问题: using System; us

    0热度

    1回答

    我正在C#中使用Rx创建搜索页面实现。我创建了一个通用搜索方法来搜索关键字并在UI上添加结果列表。下面是代码: 通用搜索方法: public static IObservable<TResult> GetSearchObservable<TInput, TResult>(INotifyPropertyChanged propertyChanged, string propertyN

    2热度

    1回答

    由于某种原因,当OperationCanceledException被抛入IDataflowBlock中时,该块不会将此异常传播到其IDataflowBlock.Completion任务。运行下面的代码示例会返回一个意外的IDataflowBlock.Completion.Status == TaskStatus.RanToCompletion。 然而,如果在该块中的抛出的异常类型被改变为Argu

    0热度

    1回答

    我有一个关于使用Dataflow TPL库实现流水线的问题。 我的情况是,我有一个软件需要同时处理一些任务。 处理过程如下所示:首先我们在全球范围内处理专辑,然后进入相册并分别处理每张照片。假设应用程序有处理插槽并且它们是可配置的(例如,假设插槽= 2)。这意味着,应用程序可以处理任一: A)在相同的时间两张专辑 b)一种专辑+一个从不同的专辑 Ç照片)两张照片在同一时间对同一专辑 d)两张照片上