我有一个基于BlockingCollection的ConcurrentStack
Dim stackBase As New ConcurrentStack(Of MyObject) Dim myStack = New BlockingCollection(Of MyObject)(stackBase)
在我的一个生产者中,我想在添加一个新项目之前检查阻塞集合中的顶部项。据我所知,在此期间,这件物品可能会被消费者拿走。在这种情况下,这不是一个问题,因为我只是试图避免掩埋某些对象。
ConcurrentStack具有能够完美工作的TryPeek,但我没有访问stackBase对象的权限。
有什么想法吗?
发布于 2014-05-02 02:47:39
您应该公开访问并发堆栈和阻塞集合的服务,从而公开正在寻找的行为。这样,您也可以在测试时模拟行为。
interface IWhateverYourCollectionService {
//TryPeak();
//Any other methods that make sense for what your doing.
}通过这种方式,您可以将这两个对象存储在服务中,或者从工厂抓取这两个对象,并通过服务公开适当的行为。
https://stackoverflow.com/questions/23419795
复制相似问题