【问题标题】:Multiple Thread Access a Collection多线程访问一个集合
【发布时间】:2012-08-05 16:59:45
【问题描述】:

假设有多个线程访问的集合。一个线程需要知道给定项目已被另一个线程添加。任何人都可以提供解决方案吗?谢谢。

【问题讨论】:

  • 您可以澄清“一个线程需要知道某个特定项目已被另一个线程添加” - 您是否只需要知道何时将某些内容添加到集合中(如可观察集合),或者你真的需要知道它是否来自不同的线程吗?
  • 在我知道给定项目已被其他线程添加到集合中后,我需要做一些事情。就像你的意思是一个可观察的集合。我们可以说一个读取线程来观察集合和多个写入线程来更改集合。谢谢。
  • 问题说明“特定项目”。请更正问题。
  • 您可以使用事件。但是事件向对象发送通知,而不是向线程发送通知。线程不太适合被通知。他们可以等待一些东西,但那是在浪费线程。你还在求一把尺子。

标签: .net multithreading concurrency


【解决方案1】:

从线程安全集合开始

Thread-Safe Collections

至于知道哪个线程添加了特定项目,我认为项目不会跟踪胎面。我认为您可以添加一个 Property TheadName 并让线程输入该值。

问题指出“已添加特定项目”。然后在评论中,OP 推断出任何项目。

.NET 没有线程安全的 ObservableCollection。有一些关于 codeplex 或可能重新考虑您的设计。 ConcurrentQueue 可能是一种选择。

【讨论】:

  • 为了清楚起见,我认为您的意思是任何项目。你确定你不能用队列做到这一点。当队列处理和项目时,它可以将其添加到 ObservableCollection。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多