示例#1
0
 public static ILoadBalancedHandle Execute(this ILoadBalancer lb, IEnumerator longRunningAction, int maxMillisecondsUsedPerFrame)
 {
     LoadBalancedActionPool.RecycledLongRunningAction recycledLongRunningAction;
     Ensure.ArgumentNotNull(longRunningAction, "longRunningAction");
     if (LoadBalancedActionPool._longActions == null)
     {
         LoadBalancedActionPool._longActions = new Queue <LoadBalancedActionPool.RecycledLongRunningAction>(1);
     }
     if (LoadBalancedActionPool._longActions.Count <= 0)
     {
         recycledLongRunningAction = new LoadBalancedActionPool.RecycledLongRunningAction()
         {
             iter = longRunningAction,
             maxMillisecondsUsedPerFrame = maxMillisecondsUsedPerFrame
         };
     }
     else
     {
         recycledLongRunningAction      = LoadBalancedActionPool._longActions.Dequeue();
         recycledLongRunningAction.iter = longRunningAction;
         recycledLongRunningAction.maxMillisecondsUsedPerFrame = maxMillisecondsUsedPerFrame;
     }
     return(lb.Add(recycledLongRunningAction));
 }
示例#2
0
 private static void Return(LoadBalancedActionPool.RecycledLongRunningAction action)
 {
     action.iter = null;
     LoadBalancedActionPool._longActions.Enqueue(action);
 }