如何基于ConcurrentStack尝试使用BlockingCollection

时间:2014-05-02 02:23:34

标签: .net blockingcollection

我的BlockingCollection基于ConcurrentStack

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

在我的一个制作人中,我想在添加新项目之前检查阻止集合中的顶部项目。我知道同时消费者可能会删除该项目。在这种情况下,这不是一个问题,因为我只是想避免埋葬某些物体。

ConcurrentStackTryPeek可以完美运行,但我无法访问stackBase对象。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您应该通过公开访问并发堆栈和阻止收集的服务来公开您要查找的行为。这样你就可以在测试时模拟行为。

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

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