如何同时处理集合中的n个项目

时间:2010-08-13 07:41:48

标签: c# list concurrency

我正在构建一个继承自List的类。项目将在运行时添加到此集合中,我想要的是让这个类在添加后自动对n个项目的每个块执行某些操作。

所以这是场景。

1]创建一个继承自List - CollectionX

的新类

2]在运行时,我们将多次调用ColX.Add(T)

3]当ColX有500个或更多项目时,将它们移动到临时区域并对它们进行操作,然后删除它们。请记住,所有的项目仍将被添加到ColX。

所以我想我的问题是如何很好地实现它并确保它是线程安全的。

要执行的工作必须以块完成,所以我不认为队列会起作用,因为你一次只能出列1个项目。

我认为我正在寻找比实际类型或库更多的模式。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

不要让CollectionX从List继承。

相反,在内部使用2个列表,将Add()添加到1并处理另一个。

这样您只需要lock交换列表。如果存在计时问题,您甚至可以使用第三个列表来防止堵塞。