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

C# 如何防止物品被使用超过一定数量?,c#,caching,concurrency,C#,Caching,Concurrency,试图实现一个ConcurrentQueue,以防止项目被使用超过特定的次数。例如,我想要一个用户对象,它可以退出队列10次,然后,该用户将被注销并释放 显然,通过使用字典并跟踪每个对象的使用次数,以及ConcurrentQueue,很容易实现。但是,我想知道是否有人有什么好主意来管理它?java中类似的东西: interface Dequeable { public int dequed(); } class ConcurrentQueueImpl extends Concurrent

试图实现一个
ConcurrentQueue
,以防止项目被使用超过特定的次数。例如,我想要一个用户对象,它可以退出队列10次,然后,该用户将被注销并释放


显然,通过使用
字典
并跟踪每个对象的使用次数,以及
ConcurrentQueue
,很容易实现。但是,我想知道是否有人有什么好主意来管理它?

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...
        }
    }
}

创建自己的线程安全队列,就像没有C#4.0的日子一样。并在其
Dequeue
方法中记录使用计数。您无需修改项的原始类/接口。您可以使用另一个
字典
作为使用计数器。

最简单的方法是为队列中包含使用计数的某种类型(例如可计数)的对象创建一个基类,并为出列创建一个包装器,将计数从10减少到零,一旦它达到零,则执行逻辑,可能有更好的方法可以做到这一点,我认为不幸的是,我目前在ConcurrentQueue中使用的类型是由其他人定义的,并且是一个接口,因此我认为我不能走这条路。在这种情况下,字典是最好的选择,将出列包装在检查字典使用计数的内容中,并相应地执行其余逻辑。不管怎么说,与你的对象相比,字典将是相当小的(内存方面的)(除非你有很多对象)。有必要按名称使用特定的接口吗?如果你读了评论,你会发现他已经说过他不能这样做,因为我提出了这个确切的建议。