Exemplo n.º 1
0
    public static BaseStateItem CreateStateItem(StateItemType type)
    {
        Queue <BaseStateItem> pool = null;

        if (!StateItemPool.TryGetValue(type, out pool))
        {
            pool = new Queue <BaseStateItem>();
            StateItemPool.Add(type, pool);
        }

        BaseStateItem stateItem = null;

        if (pool.Count == 0)
        {
            stateItem = NewStateItem(type);
        }
        else
        {
            stateItem = pool.Dequeue();
        }
        if (stateItem != null)
        {
            return(stateItem);
        }

        return(null);
    }
Exemplo n.º 2
0
    public static void DeleteAction(BaseStateItem stateItem)
    {
        StateItemType         type = stateItem.stateItemType;
        Queue <BaseStateItem> pool = null;

        if (!StateItemPool.TryGetValue(type, out pool))
        {
            return;
        }
        pool.Enqueue(stateItem);
    }