如何防止物品被使用超过一定数量?

时间:2011-08-05 04:08:53

标签: c# caching concurrency

尝试实施ConcurrentQueue,以防止项目被使用超过特定的次数。例如,我想要一个可以出列10次的User对象,之后,用户将被注销并处理掉。

使用Dictionary并跟踪每个对象的使用次数,结合ConcurrentQueue,显然很容易实现。但是,只是想知道是否有人对管理这个有任何干净的想法?

2 个答案:

答案 0 :(得分:2)

java中的这样的东西:

interface Dequeable
{
    public int dequed();
}

class ConcurrentQueueImpl extends ConcurrentQueue
{
    ..................
    .................

    @override
    public Dequeable deque()
    {
        Dequeable obj=.................;

        **if(obj.dequed()>=10)**
        {
            // dispose off obj
            return null;
        }
        return obj;
    }

}

class SampleDequeableClass implements Dequeable
{
    private int dequedCounter=0;
    public int dequed()
    {
        dequedCounter++;
        if(dequedCounter>=10)
        {
            // log off this object...
        }
    }
}

答案 1 :(得分:0)

创建自己的线程安全Queue<T>,就像没有C#4.0的日子一样。在其Dequeue方法中,记录使用次数。您无需修改​​项目的原始类/接口。您可以使用另一个Dictionary<IFoo, int>作为使用计数器。

相关问题