private static LoadBalancedActionPool.RecycledAction GetAction(Func <float, bool> action) { LoadBalancedActionPool.RecycledAction recycledAction; Ensure.ArgumentNotNull(action, "action"); if (LoadBalancedActionPool._actions == null) { LoadBalancedActionPool._actions = new Queue <LoadBalancedActionPool.RecycledAction>(1); } if (LoadBalancedActionPool._actions.Count <= 0) { recycledAction = new LoadBalancedActionPool.RecycledAction() { action = action }; } else { recycledAction = LoadBalancedActionPool._actions.Dequeue(); recycledAction.action = action; } return(recycledAction); }
private static void Return(LoadBalancedActionPool.RecycledAction action) { action.action = null; LoadBalancedActionPool._actions.Enqueue(action); }