14得票1回答
实体框架和并行性

背景 我有一个应用程序,定期接收数据转储(XML文件),并使用Entity Framework 5(Code First)将它们导入到现有数据库中。导入是通过EF5而不是例如BULK INSERT或BCP进行的,因为必须应用已经存在于实体中的业务规则。 在应用程序本身中处理似乎是CPU绑定...

14得票2回答
如何在TPL Dataflow中将多个目标块与源块链接?

我原以为以下代码可以从两个发布者(publishers)那里都输出结果,但实际上只从第一个发布者那里输出结果: 我期望以下代码可以从两个发布者那里都得到输出,但它仅从第一个发布者那里输出结果:var broadcastBlock = new BroadcastBlock<int>...

14得票3回答
数据流:将工作分成小任务并再次分组

我需要完成以下工作: 从数据库获取页面对象 对于每个页面,获取所有图片并处理它们(I/O绑定,例如上传到CDN) 如果所有图片都成功处理,则在数据库中标记页面为已处理 由于我需要控制并行处理的页面数量,因此我决定使用TPL数据流: ___________________________...

14得票1回答
TPL数据流和Rx结合的示例

我只想学习它们以及如何将它们结合使用。我知道它们可以互相补充,但我找不到有人真正做到这一点的例子。

13得票3回答
使用TPL Dataflow按持续时间或阈值进行批处理

我已经使用TPL Dataflow实现了生产者..消费者模式。使用案例是代码从Kafka总线中读取消息。为了提高效率,当发送到数据库时,我们需要批量处理消息。 在TPL数据流中是否有一种方式可以保留消息,并在达到大小或持续时间阈值时触发? 例如,当前的实现在从队列中拉出消息后立即发布该消息。 ...

13得票1回答
DataflowBlockOptions.BoundedCapacity和BufferBlock<T>的区别

假设我有一个简单的ActionBlock&lt;int&gt;var actionBlock = new ActionBlock&lt;int&gt;(_ =&gt; Console.WriteLine(_)); 我可以指定一个有限的容量来启用缓冲:var actionBlock = new ...

12得票3回答
ITargetBlock<TInput>中的重试策略

我需要在工作流中引入重试策略。假设有3个块以如下方式连接: var executionOptions = new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 3 }; var buffer = new BufferBloc...

12得票5回答
我做错了什么还是无法并行提取zip文件?

我创建了这个来测试并行提取: public static async Task ExtractToDirectoryAsync(this FileInfo file, DirectoryInfo folder) { ActionBlock&lt;ZipArchi...

12得票2回答
TPL Dataflow有界容量转换块中的异常

我需要构建TPL数据流管道来处理大量的消息。因为有很多消息,我不能简单地将它们Post到BufferBlock的无限队列中,否则我将面临内存问题。所以我想使用BoundedCapacity = 1选项禁用队列,并使用MaxDegreeOfParallelism来使用并行任务处理,因为我的Tra...

12得票2回答
任务、TPL数据流和异步/等待,什么时候使用哪个?

我阅读过很多技术文档,包括一些由Microsoft团队或其他作者编写的有关新TPL Dataflow库、async/await并发框架和TPL功能的详细说明。然而,我并没有真正找到清晰地区分它们各自应该在何时使用的内容。我知道每个工具都有其适用性和应用场景,但具体来说: 我有一个完全在进程内...