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); }
public static void DeleteAction(BaseStateItem stateItem) { StateItemType type = stateItem.stateItemType; Queue <BaseStateItem> pool = null; if (!StateItemPool.TryGetValue(type, out pool)) { return; } pool.Enqueue(stateItem); }