如何在子对象使用列表

时间:2018-04-27 22:02:54

标签: c# task task-parallel-library

我正在尝试实现一个模型,其中父对象使用List<>旋转新的子对象。属性。父母将向List<>添加项目当孩子正在处理List<>中的项目时。这将与父母在不同时间添加项目异步,而孩子们只是通过List<>中的项目流失。然后每当List<>已经筋疲力尽了。父级不需要等待子方法完成,父级只需调用子方法,然后等待下一个信息进入以更新List<>一个孩子。

理想情况下,每个孩子在闲置时间过长时会通知父母(回调),以便父母可以杀死那个孩子。

对于要同时处理的两种方法,我认识到每种方法都必须在一个单独的线程上。也许某人有一些他们可以分享的示例代码,以指导我朝着正确的方向前进。我刚刚偶然发现了新的(对我来说)System.Threading.Tasks.Parallel库,我正在研究它。

我知道我可以将它作为两个独立的进程实现,每个进程在同一个队列(DB表或类似的东西)上运行,但我宁愿不去那条路由,除非它不能用C#和单独的线程完成

更新:从Rahul的回答中,我发现这篇文章对几个例子非常有用:BlockingCollection Overview

更新:关于任务差异的这篇文章也有助于理解线程管理:A Tour of Task

1 个答案:

答案 0 :(得分:2)

您正在谈论生产者消费者模式,在这种情况下,您可以使用BlockingCollection<T>这是一种实现。从链接的文档页面引用

  

BlockingCollection<T>是一个线程安全的集合类   提供以下内容:

     

生产者/消费者模式的实施;   BlockingCollection是一个包装器   IProducerConsumerCollection接口。