从 BlockingCollection 中删除项目
如何从 BlockingCollection 中删除项目?以下哪项是正确的?
myBlockingCollection.Remove(Item);
或者
myBlockingCollection.Take(Item);
How can an item be removed from a BlockingCollection? Which of the following is correct?
myBlockingCollection.Remove(Item);
or
myBlockingCollection.Take(Item);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您无法指定要从
BlockingCollection
中删除的特定项目。Take()
方法从底层集合中删除一个项目并返回删除的项目。TryTake(out T item)
方法从基础集合中删除一个项目,并将删除的项目分配给out
参数。如果可以删除某个项目,则该方法返回 true;否则返回 true。否则为假。删除的项目取决于
BlockingCollection
使用的底层集合 - 例如,ConcurrentStack
将具有 LIFO 行为,而ConcurrentQueue;
将具有 FIFO 行为。You can't specify a particular item to be removed from a
BlockingCollection<T>
.The
Take()
method removes an item from the underlying collection and returns the removed item.The
TryTake(out T item)
method removes an item from the underlying collection and assigns the removed item to theout
parameter. The method returns true if an item could be removed; otherwise, false.The item which is removed depends on the underlying collection used by the
BlockingCollection<T>
- For example,ConcurrentStack<T>
will have LIFO behavior andConcurrentQueue<T>
will have FIFO behavior.这段代码怎么样? - 它正在工作,但改变了集合的顺序。 (而且我没有在多线程状态下检查它)。
What about this code? - It's working but change the order of the collection. (And I didn't checked it in multi threads state).
我认为只有 TryTake() 是一个选项?我在 MSDN 上找不到有关 Remove() 方法的文档。
I think only TryTake() is an option? I can't find documention on the Remove() method on MSDN.
我认为
TryTake(out item)
会起作用。 BlockingCollection 类中不存在Remove,并且Take 不将item 作为参数。I think
TryTake(out item)
will work. Remove does not exist in BlockingCollection class and Take does not take item as parameter.