两个BackgroundWorkers,一个列表<t> </t>

时间:2011-10-04 17:03:39

标签: c# wpf thread-safety

我需要让这两个线程在一个通用列表上不断工作,一个线程应该将项添加到列表中,另一个应该“消耗”这些项目(只需看看它们,做一些需要做的事情,取决于一些项目的属性,然后将其删除)。

注意:我是一个初学者,所以对任何有关如何做到这一点的见解表示赞赏。

我在想2个带有while(1)循环的BackgroundWorkers(当然接受取消),List对象作为Argument传递给两者。

这可能/安全吗?我该怎么做才能保证安全?

(如果您需要更多信息,请在评论中注明,我会对此进行编辑)

谢谢!

1 个答案:

答案 0 :(得分:4)

不安全。你需要锁定阅读和写作。这是典型的生产者/消费者问题。

http://blogs.msdn.com/b/csharpfaq/archive/2010/08/12/blocking-collection-and-the-producer-consumer-problem.aspx

如果您使用的是.NET 4,则可以在此处有效地使用BlockingCollection。