如何让 parent object 填充列表而 child object 使用列表

How to have parent object fill list while child object consumes list

我正在尝试实现一个模型,其中 parent object 使用 List<> 属性 启动一个新的 child object。 parent 将向 List<> 添加项目,而 child 正在处理 List<> 中的项目。这将与 parent 在不同时间添加项目异步,而 children 只是在 List<> 中的项目中搅动,然后在 List<> 耗尽时闲置。 parent不需要等待child方法完成,parent只是调用child方法,然后等待下一个信息进来更新child.

的列表<>

理想情况下,每个 child 会在闲置太久时通知 parent(回调),这样 parent 就可以杀死那个 child。

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

我知道我可以将其实现为两个独立的进程,每个进程都在同一个队列(一个数据库 table 或类似的东西)上运行,但我宁愿不走那条路,除非它不能使用 C# 和独立线程完成。

更新:从拉胡尔的回答中,我发现这篇文章对几个例子很有帮助:BlockingCollection Overview

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

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

BlockingCollection<T> is a thread-safe collection class that provides the following:

An implementation of the producer/consumer pattern; BlockingCollection is a wrapper for the IProducerConsumerCollection interface.