我需要让这 2 个线程在通用列表上不断工作,一个线程应该将项目添加到列表中,另一个线程应该“消耗”这些项目(只看它们,根据某些线程做需要做的事情项的属性,然后将其删除)。
注意:我是初学者,所以任何有关如何执行此操作的见解都将受到赞赏。
我在考虑 2 个带有 while(1) 循环的 BackgroundWorker(当然接受取消),并将 List 对象作为参数传递给两者。
这可能/安全吗?我应该怎么做才能确保安全?
(如果您需要更多信息,请在评论中说明,我会进行编辑)
谢谢!
最佳答案
不安全。您将需要锁定阅读和写作。这是典型的生产者/消费者问题。
如果您使用的是 .NET 4,则可以在此处有效地使用 BlockingCollection。
关于c# - 两个 BackgroundWorker,一个 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651470/