2

我有一个BlockingCollection基于ConcurrentStack

Dim stackBase As New ConcurrentStack(Of MyObject) Dim myStack = New BlockingCollection(Of MyObject)(stackBase)

在我的一个生产者中,我想在添加新项目之前检查阻塞集合中的顶部项目。我了解在此期间该商品可能会被消费者移除。在这种情况下,这不是问题,因为我只是想避免掩埋某些物体。

ConcurrentStackhasTryPeek可以完美运行,但我无权访问该对象stackBase

有任何想法吗?

4

1 回答 1

0

您应该通过公开访问并发堆栈和阻塞集合的服务来公开您正在寻找的行为。这样你也可以在测试时模拟行为。

interface IWhateverYourCollectionService {
   //TryPeak();
   //Any other methods that make sense for what your doing.
}

通过这种方式,您可以将这两个对象都存储在服务中,或者让它们从工厂中获取并通过您的服务公开适当的行为。

于 2014-05-02T02:47:39.193 回答