public bool TryPop(out ExecutionItem nextItem) { nextItem = null; if (ReferenceQueue.Count > 0) { nextItem = TransformToExecutionItem(ReferenceQueue.Dequeue()); return(true); } else { return(false); } }
/// <summary> /// Creates a new ExecutionItem instance for each supplied IProjectInvocationRule. /// </summary> private ExecutionItem[] CreateExecutionItems(IProjectInvocationRule[] rules) { var list = new List<ExecutionItem>(); lock (m_ruleState) { foreach (IProjectInvocationRule rule in rules) { ProjectExecutionDetail detail; if (!m_ruleState.TryGetValue(rule.Id, out detail)) { detail = ProjectExecutionDetail.Create(rule); } var item = new ExecutionItem(rule, detail); list.Add(item); } } return list.ToArray(); }
private static void SetupForLongInvocation(out ExecutionItem i, out IRuntimeManager manager) { var args = new MockProjectInvocationRuleSetupArgs() { CanExecute = true, UsesInput = false }; int key = 1; var d = new ProjectExecutionDetail() { Key = key }; i = CreateItem(args, d); var rmMock = new Mock<IRuntimeManager>(); rmMock.Setup(m => m.Invoke(key)).Callback(() => Thread.Sleep(200)); manager = rmMock.Object; }